From ca66ab69017d75b2170bc95e96c438553f27337b Mon Sep 17 00:00:00 2001 From: Dan Lipsa Date: Wed, 12 Feb 2020 13:24:09 -0500 Subject: [PATCH 001/238] Paraview: fix PYTHONPATH for static build. (#14648) * Fix PYTHONPATH for static build. * Only for the latest version. --- .../repos/builtin/packages/paraview/package.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 823e9b0f038..111c8df7a49 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -169,11 +169,18 @@ def setup_run_environment(self, env): pv_pydir = join_path(lib_dir, 'python{0}'.format(python_version), 'site-packages') - env.prepend_path('PYTHONPATH', pv_pydir) - # The Trilinos Catalyst adapter requires - # the vtkmodules directory in PYTHONPATH - env.prepend_path('PYTHONPATH', join_path(pv_pydir, - 'vtkmodules')) + if '+shared' in self.spec or \ + self.spec.version <= Version('5.7.0'): + env.prepend_path('PYTHONPATH', pv_pydir) + # The Trilinos Catalyst adapter requires + # the vtkmodules directory in PYTHONPATH + env.prepend_path('PYTHONPATH', join_path(pv_pydir, + 'vtkmodules')) + else: + env.prepend_path('PYTHONPATH', join_path(pv_pydir, + '_paraview.zip')) + env.prepend_path('PYTHONPATH', join_path(pv_pydir, + '_vtk.zip')) def cmake_args(self): """Populate cmake arguments for ParaView.""" From 7e50cec5a42b5dc9b1ae6ef9cacb1b73e6f155f2 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Wed, 12 Feb 2020 11:30:04 -0700 Subject: [PATCH 002/238] Adding Intel LLVM compiler (#13618) * Adding Intel LLVM compiler. * Fixing some minor issues. * Split build environment on run environment in intel-llvm. --- .../builtin/packages/intel-llvm/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/intel-llvm/package.py diff --git a/var/spack/repos/builtin/packages/intel-llvm/package.py b/var/spack/repos/builtin/packages/intel-llvm/package.py new file mode 100644 index 00000000000..0be87d4a031 --- /dev/null +++ b/var/spack/repos/builtin/packages/intel-llvm/package.py @@ -0,0 +1,50 @@ +# 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 IntelLlvm(CMakePackage): + """Intel's version of the LLVM compiler. + """ + + homepage = 'https://github.com/intel/llvm' + git = 'https://github.com/intel/llvm.git' + + family = 'compiler' + + version('sycl', branch='sycl') + + depends_on('cmake@3.4.3:', type='build') + + # It doesn't seem possible to use != in a conflicts statement + # conflicts('target != x86_64', + # msg='Intel LLVM compiler currently only works for x86') + + def setup_build_environment(self, env): + env.append_flags('CXXFLAGS', self.compiler.cxx11_flag) + + def setup_run_environment(self, env): + if '+clang' in self.spec: + env.set('CC', join_path(self.spec.prefix.bin, 'clang')) + env.set('CXX', join_path(self.spec.prefix.bin, 'clang++')) + + root_cmakelists_dir = 'llvm' + + def cmake_args(self): + + cmake_args = [] + + cmake_args.extend([ + '-DLLVM_TARGETS_TO_BUILD=X86', + '-DLLVM_EXTERNAL_PROJECTS=llvm-spirv;sycl', + '-DLLVM_ENABLE_PROJECTS=clang;llvm-spirv;sycl', + '-DLLVM_EXTERNAL_SYCL_SOURCE_DIR={0}'.format( + join_path(self.stage.source_path, 'sycl')), + '-DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR={0}'.format( + join_path(self.stage.source_path, 'llvm-spirv')), + ]) + + return cmake_args From 90f3635afd5d4079631460535bcd8213945b0349 Mon Sep 17 00:00:00 2001 From: Chuck Atkins Date: Wed, 12 Feb 2020 16:21:43 -0500 Subject: [PATCH 003/238] protobuf: Fix intel compiler failures. (#14916) --- .../{intel_inline.patch => intel-v1.patch} | 0 .../builtin/packages/protobuf/intel-v2.patch | 55 +++++++++++++++++++ .../builtin/packages/protobuf/package.py | 5 +- 3 files changed, 59 insertions(+), 1 deletion(-) rename var/spack/repos/builtin/packages/protobuf/{intel_inline.patch => intel-v1.patch} (100%) create mode 100644 var/spack/repos/builtin/packages/protobuf/intel-v2.patch diff --git a/var/spack/repos/builtin/packages/protobuf/intel_inline.patch b/var/spack/repos/builtin/packages/protobuf/intel-v1.patch similarity index 100% rename from var/spack/repos/builtin/packages/protobuf/intel_inline.patch rename to var/spack/repos/builtin/packages/protobuf/intel-v1.patch diff --git a/var/spack/repos/builtin/packages/protobuf/intel-v2.patch b/var/spack/repos/builtin/packages/protobuf/intel-v2.patch new file mode 100644 index 00000000000..4a3eb773399 --- /dev/null +++ b/var/spack/repos/builtin/packages/protobuf/intel-v2.patch @@ -0,0 +1,55 @@ +From 22f4f5422eddaac94750b268b7e6e305bd9cce5b Mon Sep 17 00:00:00 2001 +From: Chuck Atkins +Date: Tue, 11 Feb 2020 10:21:44 -0500 +Subject: [PATCH 1/2] Intel compiler: ifdef out an incorrectly evaluated is_pod + type trait + +--- + src/google/protobuf/arena.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/google/protobuf/arena.h b/src/google/protobuf/arena.h +index d73b53c79f..3ecfe23c09 100644 +--- a/src/google/protobuf/arena.h ++++ b/src/google/protobuf/arena.h +@@ -338,8 +338,10 @@ class PROTOBUF_EXPORT alignas(8) Arena final { + template + PROTOBUF_ALWAYS_INLINE static T* CreateArray(Arena* arena, + size_t num_elements) { ++#ifndef __INTEL_COMPILER // icc mis-evaluates some types as non-pod + static_assert(std::is_pod::value, + "CreateArray requires a trivially constructible type"); ++#endif + static_assert(std::is_trivially_destructible::value, + "CreateArray requires a trivially destructible type"); + GOOGLE_CHECK_LE(num_elements, std::numeric_limits::max() / sizeof(T)) + +From 9c2c9861d5490801503b51936d00320bba68d465 Mon Sep 17 00:00:00 2001 +From: Chuck Atkins +Date: Tue, 11 Feb 2020 10:22:38 -0500 +Subject: [PATCH 2/2] Intel compiler: silence noisy warning for incorrectly + evaluated inlining + +--- + cmake/CMakeLists.txt | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt +index 8e5e68073b..849679995a 100644 +--- a/cmake/CMakeLists.txt ++++ b/cmake/CMakeLists.txt +@@ -28,6 +28,14 @@ else() + set(CMAKE_CXX_EXTENSIONS OFF) + endif() + ++# The Intel compiler isn't able to deal with noinline member functions of ++# template classses defined in headers. As such it spams the output with ++# warning #2196: routine is both "inline" and "noinline" ++# This silences that warning. ++if (CMAKE_CXX_COMPILER_ID MATCHES Intel) ++ string(APPEND CMAKE_CXX_FLAGS " -diag-disable=2196") ++endif() ++ + # Options + option(protobuf_BUILD_TESTS "Build tests" ON) + option(protobuf_BUILD_CONFORMANCE "Build conformance tests" OFF) diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index 513d5653b44..0923d3a961e 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -48,7 +48,10 @@ class Protobuf(CMakePackage): # first fixed in 3.4.0: https://github.com/google/protobuf/pull/3406 patch('pkgconfig.patch', when='@:3.3.2') - patch('intel_inline.patch', when='@3.2.0: %intel') + patch('intel-v1.patch', when='@3.2:@3.6 %intel') + + # See https://github.com/protocolbuffers/protobuf/pull/7197 + patch('intel-v2.patch', when='@3.7:@3.11.4 %intel') def fetch_remote_versions(self): """Ignore additional source artifacts uploaded with releases, From a7b43f1015a0559705f2714a680aa9f87313e603 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 28 Jan 2020 21:31:53 -0800 Subject: [PATCH 004/238] spack python: add -m option to run modules as scripts It's often useful to run a module with `python -m`, e.g.: python -m pyinstrument script.py Running a python script this way was hard, though, as `spack python` did not have a similar `-m` option. This PR adds a `-m` option to `spack python` so that we can do things like this: spack python -m pyinstrument ./test.py This makes it easy to write a script that uses a small part of Spack and then profile it. Previously thee easiest way to do this was to write a custom Spack command, which is often overkill. --- lib/spack/spack/cmd/python.py | 16 +++++++++++++++- lib/spack/spack/test/cmd/python.py | 16 ++++++++++++++++ share/spack/spack-completion.bash | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py index 492c8f98e0d..2f2290aad8a 100644 --- a/lib/spack/spack/cmd/python.py +++ b/lib/spack/spack/cmd/python.py @@ -8,6 +8,9 @@ import code import argparse import platform +import runpy + +import llnl.util.tty as tty import spack @@ -19,12 +22,23 @@ def setup_parser(subparser): subparser.add_argument( '-c', dest='python_command', help='command to execute') + subparser.add_argument( + '-m', dest='module', action='store', + help='run library module as a script') subparser.add_argument( 'python_args', nargs=argparse.REMAINDER, help="file to run plus arguments") -def python(parser, args): +def python(parser, args, unknown_args): + if args.module: + sys.argv = ['spack-python'] + unknown_args + args.python_args + runpy.run_module(args.module, run_name="__main__", alter_sys=True) + return + + if unknown_args: + tty.die("Unknown arguments:", " ".join(unknown_args)) + # Fake a main python shell by setting __name__ to __main__. console = code.InteractiveConsole({'__name__': '__main__', 'spack': spack}) diff --git a/lib/spack/spack/test/cmd/python.py b/lib/spack/spack/test/cmd/python.py index 074c295622f..5bc05e0127e 100644 --- a/lib/spack/spack/test/cmd/python.py +++ b/lib/spack/spack/test/cmd/python.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import pytest + import spack from spack.main import SpackCommand @@ -12,3 +14,17 @@ def test_python(): out = python('-c', 'import spack; print(spack.spack_version)') assert out.strip() == spack.spack_version + + +def test_python_with_module(): + # pytest rewrites a lot of modules, which interferes with runpy, so + # it's hard to test this. Trying to import a module like sys, that + # has no code associated with it, raises an error reliably in python + # 2 and 3, which indicates we successfully ran runpy.run_module. + with pytest.raises(ImportError, match="No code object"): + python('-m', 'sys') + + +def test_python_raises(): + out = python('--foobar', fail_on_error=False) + assert "Error: Unknown arguments" in out diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index e6b75294525..b17733e1bf7 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1272,7 +1272,7 @@ _spack_pydoc() { _spack_python() { if $list_options then - SPACK_COMPREPLY="-h --help -c" + SPACK_COMPREPLY="-h --help -c -m" else SPACK_COMPREPLY="" fi From 38303a6a7929777053751846d6b512d863bb8d32 Mon Sep 17 00:00:00 2001 From: noguchi-k <55966120+noguchi-k@users.noreply.github.com> Date: Thu, 13 Feb 2020 11:13:26 +0900 Subject: [PATCH 005/238] macsio: cast JsonGetInt from int to unsigned int (#14736) * macsio: cast from int to unsigned int * macsio: apply a patch only when version is 1.1 --- var/spack/repos/builtin/packages/macsio/cast.patch | 11 +++++++++++ var/spack/repos/builtin/packages/macsio/package.py | 3 +++ 2 files changed, 14 insertions(+) create mode 100644 var/spack/repos/builtin/packages/macsio/cast.patch diff --git a/var/spack/repos/builtin/packages/macsio/cast.patch b/var/spack/repos/builtin/packages/macsio/cast.patch new file mode 100644 index 00000000000..5d26d8ebac7 --- /dev/null +++ b/var/spack/repos/builtin/packages/macsio/cast.patch @@ -0,0 +1,11 @@ +--- spack-src/plugins/macsio_silo.c.org 2020-02-04 10:48:08.031770849 +0900 ++++ spack-src/plugins/macsio_silo.c 2020-02-04 10:48:48.175592435 +0900 +@@ -706,7 +706,7 @@ + char fileName[256]; + MACSIO_MIF_baton_t *bat; + MACSIO_MIF_ioFlags_t ioFlags = {MACSIO_MIF_WRITE, +- JsonGetInt(main_obj, "clargs/exercise_scr")&0x1}; ++ (unsigned int)JsonGetInt(main_obj, "clargs/exercise_scr")&0x1}; + + /* Without this barrier, I get strange behavior with Silo's MACSIO_MIF interface */ + //#warning CONFIRM THIS IS STILL NEEDED diff --git a/var/spack/repos/builtin/packages/macsio/package.py b/var/spack/repos/builtin/packages/macsio/package.py index 579fabda7ee..46dccab4be0 100644 --- a/var/spack/repos/builtin/packages/macsio/package.py +++ b/var/spack/repos/builtin/packages/macsio/package.py @@ -42,6 +42,9 @@ class Macsio(CMakePackage): depends_on('typhonio', when="+typhonio") depends_on('scr', when="+scr") + # Ref: https://github.com/LLNL/MACSio/commit/51b8c40cd9813adec5dd4dd6cee948bb9ddb7ee1 + patch('cast.patch', when='@1.1') + def cmake_args(self): spec = self.spec cmake_args = [] From 5243d270d465c9bdaf8e9153386dbfd32920d913 Mon Sep 17 00:00:00 2001 From: eugeneswalker Date: Wed, 12 Feb 2020 18:14:35 +0000 Subject: [PATCH 006/238] bmi depends on automake for build --- var/spack/repos/builtin/packages/bmi/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/bmi/package.py b/var/spack/repos/builtin/packages/bmi/package.py index ad2cb53cac4..dfdacf5a49b 100644 --- a/var/spack/repos/builtin/packages/bmi/package.py +++ b/var/spack/repos/builtin/packages/bmi/package.py @@ -15,6 +15,7 @@ class Bmi(AutotoolsPackage): version('develop', branch='master') depends_on('autoconf', type='build') + depends_on('automake', type='build') # need to override 'autoreconf' so we can run BMI's 'prepare' script def autoreconf(self, spec, prefix): From de84bd3f247946cee0f343b9d52ba770fb57157a Mon Sep 17 00:00:00 2001 From: Federico Ficarelli Date: Thu, 13 Feb 2020 07:32:39 +0100 Subject: [PATCH 007/238] hipsycl: new package and new 'sycl' virtual package (#14051) --- etc/spack/defaults/packages.yaml | 1 + .../repos/builtin/packages/hipsycl/package.py | 159 ++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hipsycl/package.py diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index 85004ca1d87..fcc39f534ea 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -43,6 +43,7 @@ packages: szip: [libszip, libaec] tbb: [intel-tbb] unwind: [libunwind] + sycl: [hipsycl] permissions: read: world write: user diff --git a/var/spack/repos/builtin/packages/hipsycl/package.py b/var/spack/repos/builtin/packages/hipsycl/package.py new file mode 100644 index 00000000000..18ea5895fca --- /dev/null +++ b/var/spack/repos/builtin/packages/hipsycl/package.py @@ -0,0 +1,159 @@ +# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * +from os import path +import json +from llnl.util import filesystem + + +class Hipsycl(CMakePackage): + """hipSYCL is an implementation of the SYCL standard programming model + over NVIDIA CUDA/AMD HIP""" + + homepage = "https://github.com/illuhad/hipSYCL" + url = "https://github.com/illuhad/hipSYCL/archive/v0.8.0.tar.gz" + git = "https://github.com/illuhad/hipSYCL.git" + + maintainers = ["nazavode"] + + provides("sycl") + + version("master", branch="master", submodules=True) + version( + "0.8.0", + commit="2daf8407e49dd32ebd1c266e8e944e390d28b22a", + submodules=True, + ) + + variant( + "cuda", + default=False, + description="Enable CUDA backend for SYCL kernels", + ) + + depends_on("cmake@3.5:", type="build") + depends_on("boost +filesystem") + depends_on("python@3:") + depends_on("llvm@8: +clang", when="~cuda") + depends_on("llvm@9: +clang", when="+cuda") + # LLVM PTX backend requires cuda7:10.1.9999 (https://tinyurl.com/v82k5qq) + depends_on("cuda@9:10.1.9999", when="@0.8.1: +cuda") + # hipSYCL@:0.8.0 requires cuda@9:10.0.9999 due to a known bug + depends_on("cuda@9:10.0.9999", when="@:0.8.0 +cuda") + + conflicts( + "%gcc@:4.9999", + msg="hipSYCL needs proper C++14 support to be built, %gcc is too old", + ) + conflicts( + "^llvm build_type=Debug", + when="+cuda", + msg="LLVM debug builds don't work with hipSYCL CUDA backend; for " + "further info please refer to: " + "https://github.com/illuhad/hipSYCL/blob/master/doc/install-cuda.md", + ) + + def cmake_args(self): + spec = self.spec + args = [ + "-DWITH_CPU_BACKEND:Bool=TRUE", + # TODO: no ROCm stuff available in spack yet + "-DWITH_ROCM_BACKEND:Bool=FALSE", + "-DWITH_CUDA_BACKEND:Bool={0}".format( + "TRUE" if "+cuda" in spec else "FALSE" + ), + # prevent hipSYCL's cmake to look for other LLVM installations + # if the specified one isn't compatible + "-DDISABLE_LLVM_VERSION_CHECK:Bool=TRUE", + ] + # LLVM directory containing all installed CMake files + # (e.g.: configs consumed by client projects) + llvm_cmake_dirs = filesystem.find( + spec["llvm"].prefix, "LLVMExports.cmake" + ) + if len(llvm_cmake_dirs) != 1: + raise InstallError( + "concretized llvm dependency must provide " + "a unique directory containing CMake client " + "files, found: {0}".format(llvm_cmake_dirs) + ) + args.append( + "-DLLVM_DIR:String={0}".format(path.dirname(llvm_cmake_dirs[0])) + ) + # clang internal headers directory + llvm_clang_include_dirs = filesystem.find( + spec["llvm"].prefix, "__clang_cuda_runtime_wrapper.h" + ) + if len(llvm_clang_include_dirs) != 1: + raise InstallError( + "concretized llvm dependency must provide a " + "unique directory containing clang internal " + "headers, found: {0}".format(llvm_clang_include_dirs) + ) + args.append( + "-DCLANG_INCLUDE_PATH:String={0}".format( + path.dirname(llvm_clang_include_dirs[0]) + ) + ) + # target clang++ executable + llvm_clang_bin = path.join(spec["llvm"].prefix.bin, "clang++") + if not filesystem.is_exe(llvm_clang_bin): + raise InstallError( + "concretized llvm dependency must provide a " + "valid clang++ executable, found invalid: " + "{0}".format(llvm_clang_bin) + ) + args.append( + "-DCLANG_EXECUTABLE_PATH:String={0}".format(llvm_clang_bin) + ) + # explicit CUDA toolkit + if "+cuda" in spec: + args.append( + "-DCUDA_TOOLKIT_ROOT_DIR:String={0}".format( + spec["cuda"].prefix + ) + ) + return args + + @run_after("install") + def filter_config_file(self): + config_file_paths = filesystem.find(self.prefix, "syclcc.json") + if len(config_file_paths) != 1: + raise InstallError( + "installed hipSYCL must provide a unique compiler driver " + "configuration file, found: {0}".format(config_file_paths) + ) + config_file_path = config_file_paths[0] + with open(config_file_path) as f: + config = json.load(f) + # 1. Fix compiler: use the real one in place of the Spack wrapper + config["default-cpu-cxx"] = self.compiler.cxx + # 2. Fix stdlib: we need to make sure cuda-enabled binaries find + # the libc++.so and libc++abi.so dyn linked to the sycl + # ptx backend + rpaths = set() + so_paths = filesystem.find(self.spec["llvm"].prefix, "libc++.so") + if len(so_paths) != 1: + raise InstallError( + "concretized llvm dependency must provide a " + "unique directory containing libc++.so, " + "found: {0}".format(so_paths) + ) + rpaths.add(path.dirname(so_paths[0])) + so_paths = filesystem.find(self.spec["llvm"].prefix, "libc++abi.so") + if len(so_paths) != 1: + raise InstallError( + "concretized llvm dependency must provide a " + "unique directory containing libc++abi.so, " + "found: {0}".format(so_paths) + ) + rpaths.add(path.dirname(so_paths[0])) + config["default-cuda-link-line"] += " " + " ".join( + "-rpath {0}".format(p) for p in rpaths + ) + # Replace the installed config file + with open(config_file_path, "w") as f: + json.dump(config, f, indent=2) From a337d278742a22ae11637b0944f8baa065801858 Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Thu, 13 Feb 2020 02:51:04 -0600 Subject: [PATCH 008/238] gdb: added v9.1 (#14919) --- var/spack/repos/builtin/packages/gdb/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index b683579a43c..e90f28d662b 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.1', sha256='fcda54d4f35bc53fb24b50009a71ca98410d71ff2620942e3c829a7f5d614252') version('8.3.1', sha256='26ce655216cd03f4611518a7a1c31d80ec8e884c16715e9ba8b436822e51434b') version('8.3', sha256='b2266ec592440d0eec18ee1790f8558b3b8a2845b76cc83a872e39b501ce8a28') version('8.2.1', sha256='0107985f1edb8dddef6cdd68a4f4e419f5fec0f488cc204f0b7d482c0c6c9282') From fb482ae0c9b4a1d739ef57f76eed4752f3d2efc8 Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Thu, 13 Feb 2020 10:03:19 +0100 Subject: [PATCH 009/238] py-magic: new package (#14912) --- .../repos/builtin/packages/py-magic/package.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-magic/package.py diff --git a/var/spack/repos/builtin/packages/py-magic/package.py b/var/spack/repos/builtin/packages/py-magic/package.py new file mode 100644 index 00000000000..ed29fdcdbb2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-magic/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 PyMagic(PythonPackage): + """A python wrapper for libmagic.""" + + homepage = "https://github.com/ahupp/python-magic" + url = "https://github.com/ahupp/python-magic/archive/0.4.15.tar.gz" + + version('0.4.15', sha256='6d730389249ab1e34ffb0a3c5beaa44e116687ffa081e0176dab6c59ff271593') + + depends_on('py-setuptools', type='build') + depends_on('file', type='run') From 3dd844e5978e8de76aedcc400d4b2709b4052e5e Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Thu, 13 Feb 2020 10:03:45 +0100 Subject: [PATCH 010/238] py-clustershell: new package (#14914) --- .../packages/py-clustershell/package.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-clustershell/package.py diff --git a/var/spack/repos/builtin/packages/py-clustershell/package.py b/var/spack/repos/builtin/packages/py-clustershell/package.py new file mode 100644 index 00000000000..5fd696ce89c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-clustershell/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 PyClustershell(PythonPackage): + """Scalable cluster administration Python framework - Manage node sets + node groups and execute commands on cluster nodes in parallel. + """ + + homepage = "http://cea-hpc.github.io/clustershell/" + url = "https://github.com/cea-hpc/clustershell/archive/v1.8.tar.gz" + + version('1.8', sha256='ad5a13e2d107b4095229810c35365e22ea94dfd2baf4fdcfcc68ce58ee37cee3') + + depends_on('py-setuptools', type='build') + depends_on('py-pyyaml') From 06c85ea5bfaa1f95ed143ac35a6ba847f7faeded Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Thu, 13 Feb 2020 10:06:01 +0100 Subject: [PATCH 011/238] py-elasticsearch: added v7.5.1 and v6.4.0 (#14913) --- var/spack/repos/builtin/packages/py-elasticsearch/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-elasticsearch/package.py b/var/spack/repos/builtin/packages/py-elasticsearch/package.py index f0199ea97dc..b87dd19f432 100644 --- a/var/spack/repos/builtin/packages/py-elasticsearch/package.py +++ b/var/spack/repos/builtin/packages/py-elasticsearch/package.py @@ -12,6 +12,8 @@ class PyElasticsearch(PythonPackage): homepage = "https://github.com/elastic/elasticsearch-py" url = "https://pypi.io/packages/source/e/elasticsearch/elasticsearch-5.2.0.tar.gz" + version('7.5.1', sha256='2a0ca516378ae9b87ac840e7bb529ec508f3010360dd9feed605dff2a898aff5') + version('6.4.0', sha256='fb5ab15ee283f104b5a7a5695c7e879cb2927e4eb5aed9c530811590b41259ad') version('5.2.0', sha256='45d9f8fbe0878a1b7493afeb20f4f6677a43982776ed1a77d9373e9c5b9de966') version('2.3.0', sha256='be3080a2bf32dff0a9f9fcc1c087515a25a357645673a976d25ef77166134d81') From 7252066a329c5361e2ca1e7705c4699b79c6063e Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Thu, 13 Feb 2020 10:07:07 +0100 Subject: [PATCH 012/238] py-jinja2-time: new package (#14910) --- .../packages/py-jinja2-time/package.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-jinja2-time/package.py diff --git a/var/spack/repos/builtin/packages/py-jinja2-time/package.py b/var/spack/repos/builtin/packages/py-jinja2-time/package.py new file mode 100644 index 00000000000..df57e84129e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-jinja2-time/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 PyJinja2Time(PythonPackage): + """Jinja2 Extension for Dates and Times""" + + homepage = "https://github.com/hackebrot/jinja2-time" + url = "https://github.com/hackebrot/jinja2-time/archive/0.2.0.tar.gz" + + version('0.2.0', sha256='0e647e525ba47523fa400a58fdec090b1cc6dcec4afbf095ee01e9e589e5a5ef') + + depends_on('py-setuptools', type='build') + depends_on('py-arrow') + depends_on('py-jinja2') From 856734b80463eedb870c2c693aa4406c315d6b2f Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Thu, 13 Feb 2020 10:07:29 +0100 Subject: [PATCH 013/238] py-poyo: new package (#14909) --- .../repos/builtin/packages/py-poyo/package.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-poyo/package.py diff --git a/var/spack/repos/builtin/packages/py-poyo/package.py b/var/spack/repos/builtin/packages/py-poyo/package.py new file mode 100644 index 00000000000..a1be8b682fe --- /dev/null +++ b/var/spack/repos/builtin/packages/py-poyo/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 PyPoyo(PythonPackage): + """A lightweight YAML Parser for Python""" + + homepage = "https://github.com/hackebrot/poyo" + url = "https://github.com/hackebrot/poyo/archive/0.4.1.tar.gz" + + version('0.4.1', sha256='9f069dc9c8ee359abc8ef9e7304cb1b1c23556d1f4ae64f4247c1e45de43c1f1') + + depends_on('py-setuptools', type='build') From 268f42bf7ea77aefd33dc2fd605321aeed65c244 Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Thu, 13 Feb 2020 11:42:29 +0100 Subject: [PATCH 014/238] py-binaryornot: new package (#14906) --- .../packages/py-binaryornot/package.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-binaryornot/package.py diff --git a/var/spack/repos/builtin/packages/py-binaryornot/package.py b/var/spack/repos/builtin/packages/py-binaryornot/package.py new file mode 100644 index 00000000000..9b096c9def7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-binaryornot/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 PyBinaryornot(PythonPackage): + """Ultra-lightweight pure Python package to check if a file is binary or text. + """ + + homepage = "https://binaryornot.readthedocs.io" + url = "https://github.com/audreyr/binaryornot/archive/0.4.0.tar.gz" + + version('0.4.4', sha256='8cca04876a5e9d01f0dda79390e99089da87f3c1948ab2720661ba379d1b23f2') + + depends_on('py-setuptools', type='build') + depends_on('py-chardet') From 681ad2ac441aa2efeeec1c7d5d139d5c358489fd Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 13 Feb 2020 14:49:21 +0100 Subject: [PATCH 015/238] hepmc: fixed wrong sha256 for latest versions (#14926) --- var/spack/repos/builtin/packages/hepmc/package.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/hepmc/package.py b/var/spack/repos/builtin/packages/hepmc/package.py index 9a315bc5280..80412be740c 100644 --- a/var/spack/repos/builtin/packages/hepmc/package.py +++ b/var/spack/repos/builtin/packages/hepmc/package.py @@ -14,10 +14,10 @@ class Hepmc(CMakePackage): homepage = "http://hepmc.web.cern.ch/hepmc/" url = "http://hepmc.web.cern.ch/hepmc/releases/hepmc2.06.09.tgz" - version('3.2.0', sha256='b59f301e2660db3c81e4fd4aa0701cc010463691ac57424edf4301e16a5944b4') - version('3.1.2', sha256='7df91b862cead2657ee54ab043ecf0a8f46da354c8a7ea90d8db2c435904bce0') - version('3.1.1', sha256='46098a7e9717921e436c265836c914d515cb831dde898f3f1d129468df7982e7') - version('3.1.0', sha256='ac02977d6bde18398abf9d25a2e55614e22b5e819ed4b21ea55cf31aabe6df67') + version('3.2.0', sha256='f132387763d170f25a7cc9f0bd586b83373c09acf0c3daa5504063ba460f89fc') + version('3.1.2', sha256='4133074b3928252877982f3d4b4c6c750bb7a324eb6c7bb2afc6fa256da3ecc7') + version('3.1.1', sha256='2fcbc9964d6f9f7776289d65f9c73033f85c15bf5f0df00c429a6a1d8b8248bb') + version('3.1.0', sha256='cd37eed619d58369041018b8627274ad790020a4714b54ac05ad1ebc1a6e7f8a') version('3.0.0', sha256='7ac3c939a857a5ad67bea1e77e3eb16e80d38cfdf825252ac57160634c26d9ec') version('2.06.09', sha256='e0f8fddd38472c5615210894444686ac5d72df3be682f7d151b562b236d9b422') version('2.06.08', sha256='8be6c1793e0a045f07ddb88bb64b46de7e66a52e75fb72b3f82f9a3e3ba8a8ce') From 4dc67b79aa914fea0e9d71488adfbde2d039e442 Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Thu, 13 Feb 2020 11:34:20 -0600 Subject: [PATCH 016/238] Replace direct call to patchelf with get_existing_elf_rpaths which handles exceptions. (#14929) * Replace direct call to patchelf with get_existing_elf_rpaths which handles exceptions. * Remove unused patchelf definition. * Convert to set. --- lib/spack/spack/relocate.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py index d722e587dac..87de08c9b27 100644 --- a/lib/spack/spack/relocate.py +++ b/lib/spack/spack/relocate.py @@ -684,13 +684,6 @@ def file_is_relocatable(file, paths_to_relocate=None): strings = Executable('strings') - # if we're relocating patchelf itself, use it - - if file[-13:] == "/bin/patchelf": - patchelf = Executable(file) - else: - patchelf = Executable(get_patchelf()) - # Remove the RPATHS from the strings in the executable set_of_strings = set(strings(file, output=str).split()) @@ -700,8 +693,8 @@ def file_is_relocatable(file, paths_to_relocate=None): if platform.system().lower() == 'linux': if m_subtype == 'x-executable' or m_subtype == 'x-sharedlib': - rpaths = patchelf('--print-rpath', file, output=str).strip() - set_of_strings.discard(rpaths.strip()) + rpaths = set(get_existing_elf_rpaths(file)) + set_of_strings.discard(rpaths) if platform.system().lower() == 'darwin': if m_subtype == 'x-mach-binary': rpaths, deps, idpath = macho_get_paths(file) From 1d255642303b409f0e8f70e49c5962ff6ea3e0e1 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Thu, 13 Feb 2020 17:22:54 -0800 Subject: [PATCH 017/238] libcircle depends on pkg-config for build (#14933) --- var/spack/repos/builtin/packages/libcircle/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libcircle/package.py b/var/spack/repos/builtin/packages/libcircle/package.py index f710d25f24d..ab7539084d3 100644 --- a/var/spack/repos/builtin/packages/libcircle/package.py +++ b/var/spack/repos/builtin/packages/libcircle/package.py @@ -19,6 +19,7 @@ class Libcircle(AutotoolsPackage): version('0.2.1-rc.1', sha256='5747f91cf4417023304dcc92fd07e3617ac712ca1eeb698880979bbca3f54865') depends_on('mpi') + depends_on('pkg-config', type='build') @when('@master') def autoreconf(self, spec, prefix): From eb88dfee9ae7849d4c15effce8ff78592da148ba Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Thu, 13 Feb 2020 19:23:25 -0600 Subject: [PATCH 018/238] byobu: add version 5.131 (#14932) --- var/spack/repos/builtin/packages/byobu/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/byobu/package.py b/var/spack/repos/builtin/packages/byobu/package.py index 918ec595139..dd7d5babb87 100644 --- a/var/spack/repos/builtin/packages/byobu/package.py +++ b/var/spack/repos/builtin/packages/byobu/package.py @@ -13,6 +13,9 @@ class Byobu(AutotoolsPackage): homepage = "http://www.byobu.co" url = "https://launchpad.net/byobu/trunk/5.123/+download/byobu_5.123.orig.tar.gz" + maintainers = ['matthiasdiener'] + + version('5.131', sha256='77ac751ae79d8e3f0377ac64b64bc9738fa68d68466b8d2ff652b63b1d985e52') version('5.127', sha256='4bafc7cb69ff5b0ab6998816d58cd1ef7175e5de75abc1dd7ffd6d5288a4f63b') version('5.125', sha256='5022c82705a5d57f1d4e8dcb1819fd04628af2d4b4618b7d44fa27ebfcdda9db') version('5.123', sha256='2e5a5425368d2f74c0b8649ce88fc653420c248f6c7945b4b718f382adc5a67d') From 03ce5effa18e9189c2d41aaa0dfda56e24f83d1b Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Thu, 13 Feb 2020 19:26:26 -0600 Subject: [PATCH 019/238] charmpp: add version 6.10.0, switch to https for download (#14930) --- var/spack/repos/builtin/packages/charmpp/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/charmpp/package.py b/var/spack/repos/builtin/packages/charmpp/package.py index 9f8629be8e0..80213216141 100644 --- a/var/spack/repos/builtin/packages/charmpp/package.py +++ b/var/spack/repos/builtin/packages/charmpp/package.py @@ -18,10 +18,11 @@ class Charmpp(Package): (your laptop) to the largest supercomputers.""" homepage = "http://charmplusplus.org" - url = "http://charm.cs.illinois.edu/distrib/charm-6.8.2.tar.gz" + url = "https://charm.cs.illinois.edu/distrib/charm-6.8.2.tar.gz" git = "https://github.com/UIUC-PPL/charm.git" version("develop", branch="charm") + version('6.10.0', sha256='7c526a78aa0c202b7f0418b345138e7dc40496f0bb7b9e301e0381980450b25c') version("6.9.0", sha256="85ed660e46eeb7a6fc6b32deab08226f647c244241948f6b592ebcd2b6050cbd") version("6.8.2", sha256="08e6001b0e9cd00ebde179f76098767149bf7e454f29028fb9a8bfb55778698e") version("6.8.1", sha256="bf39666bb9f8bad1cd17dafa3cdf35c7ef64dfaeda835cf66ae530b7baab7583") From 4b7f057a4baf49f407c1ec503119c8ba0cfe913a Mon Sep 17 00:00:00 2001 From: Cameron Stanavige Date: Thu, 13 Feb 2020 19:28:33 -0600 Subject: [PATCH 020/238] unifyfs: remove numa dependency (#14925) UnifyFS no longer has an option to depend on numa. This removes the numa variant, dependency, and associated conflict. This commit also - renames the `pmpi` variant to the more appropriate `auto-mount` - changes the preferred version to the most recent release --- .../repos/builtin/packages/unifyfs/package.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/unifyfs/package.py b/var/spack/repos/builtin/packages/unifyfs/package.py index 98c249d7e6e..cf4a8e0c4f3 100644 --- a/var/spack/repos/builtin/packages/unifyfs/package.py +++ b/var/spack/repos/builtin/packages/unifyfs/package.py @@ -19,13 +19,12 @@ class Unifyfs(AutotoolsPackage): url = "https://github.com/LLNL/UnifyFS/releases/download/v0.9.0/unifyfs-0.9.0.tar.gz" maintainers = ['CamStan'] - version('develop', branch='dev', preferred=True) + version('develop', branch='dev') version('0.9.0', sha256='e6c73e22ef1c23f3141646aa17058b69c1c4e526886771f8fe982da924265b0f') + variant('auto-mount', default='True', description='Enable automatic mount/unmount in MPI_Init/Finalize') variant('hdf5', default='False', description='Build with parallel HDF5 (install with `^hdf5~mpi` for serial)') variant('fortran', default='False', description='Build with gfortran support') - variant('numa', default='False', description='Build with NUMA') - variant('pmpi', default='False', description='Enable transparent mount/unmount at MPI_Init/Finalize') variant('pmi', default='False', description='Enable PMI2 build options') variant('pmix', default='False', description='Enable PMIx build options') @@ -47,12 +46,9 @@ class Unifyfs(AutotoolsPackage): # Optional dependencies depends_on('hdf5', when='+hdf5') - depends_on('numactl', when='+numa') conflicts('^mercury~bmi') conflicts('^mercury~sm') - # UnifyFS depends on numactl, which doesn't currently build on darwin. - conflicts('platform=darwin', when='+numa') # Known compatibility issues with ifort and xlf. Fixes coming. conflicts('%intel', when='+fortran') conflicts('%xl', when='+fortran') @@ -84,16 +80,14 @@ def hdf5_compiler_path(name): else: # parallel HDF5 return spec[name].prefix.bin.h5pcc - args.extend(self.with_or_without('numa', - lambda x: spec['numactl'].prefix)) args.extend(self.with_or_without('hdf5', hdf5_compiler_path)) + if '+auto-mount' in spec: + args.append('--enable-mpi-mount') + if '+fortran' in spec: args.append('--enable-fortran') - if '+pmpi' in spec: - args.append('--enable-mpi-mount') - if '+pmi' in spec: args.append('--enable-pmi') From 1c5f72dbaa81e7957ccb5d8005c9d16e62c62f82 Mon Sep 17 00:00:00 2001 From: "Mark W. Krentel" Date: Thu, 13 Feb 2020 19:30:10 -0600 Subject: [PATCH 021/238] intel-tbb: update to new tar file names for 2020 versions (#14924) Starting with 2020, the tar files are named v2020.0.tar.gz, v2020.1.tar.gz, etc, not 2020_U1.tar.gz. https://github.com/intel/tbb/releases The previous commit (7a10478708) fixed the checksum mismatch, but didn't update url_for_version (my bad). --- .../builtin/packages/intel-tbb/package.py | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel-tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py index 4b68ae5b4e8..72ed301bd85 100644 --- a/var/spack/repos/builtin/packages/intel-tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-tbb/package.py @@ -19,12 +19,10 @@ class IntelTbb(Package): homepage = "http://www.threadingbuildingblocks.org/" # Note: when adding new versions, please check and update the - # patches and filters below as needed. + # patches, filters and url_for_version() below as needed. - # See url_for_version() below. - - version('2020.1', sha256='72cffaeac3b50b117c4e2279f9162308d35873b3e744aff5a088beff6f65c9af') - version('2020', sha256='db80f4f7abb95c2d08fe64abdc0a9250903e4c725f1c667ac517450de426023a') + version('2020.1', sha256='48d51c63b16787af54e1ee4aaf30042087f20564b4eecf9a032d5568bc2f0bf8') + version('2020.0', sha256='8eed2377ac62e6ac10af5a8303ce861e4525ffe491a061b48e8fe094fc741ce9') version('2019.9', sha256='15652f5328cf00c576f065e5cd3eaf3317422fe82afb67a9bcec0dc065bd2abe') version('2019.8', sha256='7b1fd8caea14be72ae4175896510bf99c809cd7031306a1917565e6de7382fba') version('2019.7', sha256='4204a93f4c0fd989fb6f79acae74feb02ee39725c93968773d9b6efeb75c7a6a') @@ -108,12 +106,21 @@ class IntelTbb(Package): # Some very old systems don't support transactional memory. patch("disable-tm.patch", when='~tm') + # Version and tar file names: + # 2020.0 --> v2020.0.tar.gz starting with 2020 + # 2017.1 --> 2017_U1.tar.gz starting with 2017 + # 2017 --> 2017.tar.gz + # 4.4.6 --> 4.4.6.tar.gz + # def url_for_version(self, version): - url = 'https://github.com/01org/tbb/archive/{0}.tar.gz' - if (version[0] >= 2017) and len(version) > 1: - return url.format('{0}_U{1}'.format(version[0], version[1])) + url = 'https://github.com/intel/tbb/archive/{0}.tar.gz' + if version[0] >= 2020: + name = 'v{0}'.format(version) + elif version[0] >= 2017 and len(version) > 1: + name = '{0}_U{1}'.format(version[0], version[1]) else: - return url.format(version) + name = '{0}'.format(version) + return url.format(name) def coerce_to_spack(self, tbb_build_subdir): for compiler in ["icc", "gcc", "clang"]: From 413de215b21b961ef456b3348d01fcb79e767a04 Mon Sep 17 00:00:00 2001 From: asmaahassan90 <31959389+asmaahassan90@users.noreply.github.com> Date: Fri, 14 Feb 2020 03:37:39 +0200 Subject: [PATCH 022/238] Fix run environment (#14908) * Fix run environment Trying to install Avizo, i get "Error: NameError: name 'run_env' is not defined". Correcting it to be just "env" * fix identation --- var/spack/repos/builtin/packages/avizo/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/avizo/package.py b/var/spack/repos/builtin/packages/avizo/package.py index 283c2d56102..cf14c76d22d 100644 --- a/var/spack/repos/builtin/packages/avizo/package.py +++ b/var/spack/repos/builtin/packages/avizo/package.py @@ -31,8 +31,8 @@ def url_for_version(self, version): license_vars = ['MCSLMD_LICENSE_FILE'] def setup_run_environment(self, env): - run_env.set('MCSLMD_LICENSE_FILE', join_path(self.prefix.share.license, - 'password.dat')) + env.set('MCSLMD_LICENSE_FILE', join_path(self.prefix.share.license, + 'password.dat')) def install(self, spec, prefix): ver = self.version.joined From 9046deae80472e1318456ca06d5d1db8fb771993 Mon Sep 17 00:00:00 2001 From: Alec Thomas Date: Fri, 14 Feb 2020 12:45:09 +1100 Subject: [PATCH 023/238] Add missing dep to git. (#14895) As discussed in: https://spackpm.slack.com/archives/C5VL7V81G/p1581394270058800 --- var/spack/repos/builtin/packages/git/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index c77c1fa916d..1bd236051a7 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -178,6 +178,7 @@ class Git(AutotoolsPackage): depends_on('expat') depends_on('gettext') depends_on('libiconv') + depends_on('libidn2') depends_on('openssl') depends_on('pcre', when='@:2.13') depends_on('pcre2', when='@2.14:') From 0d0ab601503c238986a49e0c764639044b393cfe Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Thu, 13 Feb 2020 20:45:55 -0500 Subject: [PATCH 024/238] Patch silo for %clang@9 (#14892) --- .../repos/builtin/packages/silo/package.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index 420e8fe59e3..ef39dfdaafe 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -41,6 +41,32 @@ def flag_handler(self, name, flags): flags.append('-ldl') return (flags, None, None) + @when('%clang@9:') + def patch(self): + # Clang 9 and later include macro definitions in that conflict + # with typedefs DOMAIN and RANGE used in Silo plugins. + # It looks like the upstream fpzip repo has been fixed, but that change + # hasn't yet made it into silo. + # https://github.com/LLNL/fpzip/blob/master/src/pcmap.h + + def repl(match): + # Change macro-like uppercase to title-case. + return match.group(1).title() + + files_to_filter = [ + "src/fpzip/codec.h", + "src/fpzip/pcdecoder.inl", + "src/fpzip/pcencoder.inl", + "src/fpzip/pcmap.h", + "src/fpzip/pcmap.inl", + "src/fpzip/read.cpp", + "src/fpzip/write.cpp", + "src/hzip/hzmap.h", + "src/hzip/hzresidual.h", + ] + + filter_file(r'\b(DOMAIN|RANGE|UNION)\b', repl, *files_to_filter) + def configure_args(self): spec = self.spec config_args = [ From 725336ee48422be487747c08e0dff58f23a3b7ad Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Thu, 13 Feb 2020 19:47:37 -0600 Subject: [PATCH 025/238] Update and fix the r-rhtslib package (#14863) This PR adds an updated version to the r-rhtslib package as well as fix the build. - add patches to use compiler flags from R - add variables for bzip2 and xz dependencies - use the spack Makeconf file when building the in-tree htslib - make patchelf available to allow R to remove reference to temporary installation directory in htslib shared object - Add new version of r-rsamtools as the r-rsamtools and r-rhtlib packages are closely paired. --- .../packages/r-rhtslib/find_deps-1.12.patch | 19 +++++++++++++++++++ .../packages/r-rhtslib/find_deps-1.16.patch | 18 ++++++++++++++++++ .../builtin/packages/r-rhtslib/package.py | 17 +++++++++++++++++ .../r-rhtslib/use_spack_Makeconf.patch | 11 +++++++++++ .../builtin/packages/r-rsamtools/package.py | 4 +++- 5 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/r-rhtslib/find_deps-1.12.patch create mode 100644 var/spack/repos/builtin/packages/r-rhtslib/find_deps-1.16.patch create mode 100644 var/spack/repos/builtin/packages/r-rhtslib/use_spack_Makeconf.patch diff --git a/var/spack/repos/builtin/packages/r-rhtslib/find_deps-1.12.patch b/var/spack/repos/builtin/packages/r-rhtslib/find_deps-1.12.patch new file mode 100644 index 00000000000..224eb5fdf87 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rhtslib/find_deps-1.12.patch @@ -0,0 +1,19 @@ +--- a/src/htslib-1.7/Makefile.Rhtslib 2020-02-08 17:12:30.000000000 -0600 ++++ b/src/htslib-1.7/Makefile.Rhtslib 2020-02-08 19:08:45.969675431 -0600 +@@ -37,13 +37,13 @@ + # Default libraries to link if configure is not used + htslib_default_libs = -lz -lm -lbz2 -llzma + +-CPPFLAGS = ++CPPFLAGS += $(BZIP2_INCLUDE) $(XZ_INCLUDE) + # TODO: probably update cram code to make it compile cleanly with -Wc++-compat + # For testing strict C99 support add -std=c99 -D_XOPEN_SOURCE=600 + #CFLAGS = -g -Wall -O2 -pedantic -std=c99 -D_XOPEN_SOURCE=600 -D__FUNCTION__=__func__ +-CFLAGS = -g -Wall -O2 ++CFLAGS += -g -Wall -O2 + EXTRA_CFLAGS_PIC = -fpic +-LDFLAGS = ++LDFLAGS += $(BZIP2_LIB) $(XZ_LIB) + LIBS = $(htslib_default_libs) + + prefix = /usr/local diff --git a/var/spack/repos/builtin/packages/r-rhtslib/find_deps-1.16.patch b/var/spack/repos/builtin/packages/r-rhtslib/find_deps-1.16.patch new file mode 100644 index 00000000000..ae3ec24d2cd --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rhtslib/find_deps-1.16.patch @@ -0,0 +1,18 @@ +--- a/src/htslib-1.7/Makefile.Rhtslib 2020-02-08 13:25:34.000000000 -0600 ++++ b/src/htslib-1.7/Makefile.Rhtslib 2020-02-08 21:02:01.434363322 -0600 +@@ -37,13 +37,13 @@ + # Default libraries to link if configure is not used + htslib_default_libs = -lz -lm -lbz2 -llzma + +-CPPFLAGS += -D_FILE_OFFSET_BITS=64 ++CPPFLAGS += -D_FILE_OFFSET_BITS=64 $(BZIP2_INCLUDE) $(XZ_INCLUDE) + # TODO: probably update cram code to make it compile cleanly with -Wc++-compat + # For testing strict C99 support add -std=c99 -D_XOPEN_SOURCE=600 + #CFLAGS = -g -Wall -O2 -pedantic -std=c99 -D_XOPEN_SOURCE=600 -D__FUNCTION__=__func__ + CFLAGS += -fpic + EXTRA_CFLAGS_PIC = +-#LDFLAGS = ++LDFLAGS += $(BZIP2_LIB) $(XZ_LIB) + LIBS = $(htslib_default_libs) + + prefix = /usr/local diff --git a/var/spack/repos/builtin/packages/r-rhtslib/package.py b/var/spack/repos/builtin/packages/r-rhtslib/package.py index 2ee01f0ac98..03539a56ba4 100644 --- a/var/spack/repos/builtin/packages/r-rhtslib/package.py +++ b/var/spack/repos/builtin/packages/r-rhtslib/package.py @@ -18,6 +18,7 @@ class RRhtslib(RPackage): homepage = "https://bioconductor.org/packages/Rhtslib" git = "https://git.bioconductor.org/packages/Rhtslib.git" + version('1.18.1', commit='751a2ebaed43b7991204b27bd6c7870645001d82') version('1.16.3', commit='3ed0b5db2ee3cf0df1c6096fde8855c8485eebd4') version('1.14.1', commit='4be260720f845a34d0ac838278fce1363f645230') version('1.12.1', commit='e3487b1355995d09b28fde5d0a7504a3e79a7203') @@ -30,3 +31,19 @@ class RRhtslib(RPackage): depends_on('xz', type=('build', 'link', 'run')) depends_on('curl', type=('build', 'link', 'run')) depends_on('gmake', type='build') + + # Some versions of this package will leave the temporary installation + # directory in the htslib shared object. R will fix this if patchelf is + # available + depends_on('patchelf', when='@1.12:1.14', type='build') + + patch('use_spack_Makeconf.patch', when='@1.12:') + patch('find_deps-1.12.patch', when='@1.12:1.14') + patch('find_deps-1.16.patch', when='@1.16:') + + @when('@1.12:') + def setup_build_environment(self, env): + env.set('BZIP2_INCLUDE', self.spec['bzip2'].headers.include_flags) + env.set('XZ_INCLUDE', self.spec['xz'].headers.include_flags) + env.set('BZIP2_LIB', self.spec['bzip2'].libs.search_flags) + env.set('XZ_LIB', self.spec['xz'].libs.search_flags) diff --git a/var/spack/repos/builtin/packages/r-rhtslib/use_spack_Makeconf.patch b/var/spack/repos/builtin/packages/r-rhtslib/use_spack_Makeconf.patch new file mode 100644 index 00000000000..d8b8ef5acf4 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rhtslib/use_spack_Makeconf.patch @@ -0,0 +1,11 @@ +--- a/src/Makevars.common 2020-02-08 17:12:30.000000000 -0600 ++++ b/src/Makevars.common 2020-02-08 20:34:49.573031195 -0600 +@@ -3,7 +3,7 @@ + INCLUDE_DIR=${R_PACKAGE_DIR}/include + USRLIB_DIR=${R_PACKAGE_DIR}/usrlib${R_ARCH} + +-R_ETC_MAKECONF=${R_HOME}/etc${R_ARCH}/Makeconf ++R_ETC_MAKECONF=${R_HOME}/etc${R_ARCH}/Makeconf.spack + + ## Preprocessor options. Keep Rhtslib::pkgconfig() function (defined in + ## R/zzz.R) in sync with this. diff --git a/var/spack/repos/builtin/packages/r-rsamtools/package.py b/var/spack/repos/builtin/packages/r-rsamtools/package.py index d988fbb9a8e..d0046d5186f 100644 --- a/var/spack/repos/builtin/packages/r-rsamtools/package.py +++ b/var/spack/repos/builtin/packages/r-rsamtools/package.py @@ -18,6 +18,7 @@ class RRsamtools(RPackage): homepage = "https://bioconductor.org/packages/Rsamtools" git = "https://git.bioconductor.org/packages/Rsamtools.git" + version('2.2.1', commit='f10084658b4c9744961fcacd79c0ae9a7a40cd30') version('2.0.3', commit='17d254cc026574d20db67474260944bf60befd70') version('1.34.1', commit='0ec1d45c7a14b51d019c3e20c4aa87c6bd2b0d0c') version('1.32.3', commit='0aa3f134143b045aa423894de81912becf64e4c2') @@ -42,6 +43,7 @@ class RRsamtools(RPackage): depends_on('r-iranges@2.13.12:', when='@1.32.3:', type=('build', 'run')) depends_on('r-xvector@0.19.7:', when='@1.32.3:', type=('build', 'run')) - depends_on('r-rhtslib@1.16.3:', when='@2.0.3:', type=('build', 'run')) + depends_on('r-rhtslib@1.16.3', when='@2.0.3', type=('build', 'run')) + depends_on('r-rhtslib@1.17.7:', when='@2.2.1:', type=('build', 'run')) depends_on('gmake', type='build') From 46ae3f0570f3ad19fc559d6fa464e701c29bd2f5 Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Thu, 13 Feb 2020 19:49:24 -0600 Subject: [PATCH 026/238] New package: r-fdb-infiniummethylation-hg18 (#14890) This PR adds the r-fdb-infiniummethylation-hg18 package and the needed dependency of r-txdb-hsapiens-ucsc-hg18-knowngene. --- .../r-fdb-infiniummethylation-hg18/package.py | 23 +++++++++++++++++++ .../package.py | 20 ++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg18/package.py create mode 100644 var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg18-knowngene/package.py diff --git a/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg18/package.py b/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg18/package.py new file mode 100644 index 00000000000..98b09d03537 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg18/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 RFdbInfiniummethylationHg18(RPackage): + """Compiled HumanMethylation27 and HumanMethylation450 annotations""" + + # This is a bioconductor package but there is no available git repository + homepage = "http://bioconductor.org/packages/release/data/annotation/html/FDb.InfiniumMethylation.hg18.html" + url = "http://bioconductor.org/packages/release/data/annotation/src/contrib/FDb.InfiniumMethylation.hg18_2.2.0.tar.gz" + + version('2.2.0', sha256='4a9028ac03c11fffbab731ea750bc7f9b0884fc43c6a8dac6eb2c644e4c79f6f') + + depends_on('r@2.10:', type=('build', 'run')) + depends_on('r-genomicfeatures@1.7.22:', type=('build', 'run')) + depends_on('r-txdb-hsapiens-ucsc-hg18-knowngene', type=('build', 'run')) + depends_on('r-org-hs-eg-db', type=('build', 'run')) + depends_on('r-annotationdbi', type=('build', 'run')) + depends_on('r-biostrings', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg18-knowngene/package.py b/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg18-knowngene/package.py new file mode 100644 index 00000000000..fc1500a232f --- /dev/null +++ b/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg18-knowngene/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 RTxdbHsapiensUcscHg18Knowngene(RPackage): + """Exposes an annotation databases generated from UCSC by exposing these as + TxDb objects""" + + # This is a bioconductor package but ther is no available git repo + homepage = "http://bioconductor.org/packages/release/data/annotation/html/TxDb.Hsapiens.UCSC.hg18.knownGene.html" + url = "http://bioconductor.org/packages/release/data/annotation/src/contrib/TxDb.Hsapiens.UCSC.hg18.knownGene_3.2.2.tar.gz" + + version('3.2.2', sha256='bc9ca40b4eab87f5ca64a4b876d42502b9b8e9f5983d745bfe0ee349d97b69fa') + + depends_on('r-genomicfeatures@1.21.30:', type=('build', 'run')) + depends_on('r-annotationdbi', type=('build', 'run')) From 580c8f5b7eacb0a05f4b68fc4d86b14b7750a507 Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Thu, 13 Feb 2020 19:51:18 -0600 Subject: [PATCH 027/238] New package: r-exomecopy (#14885) --- .../builtin/packages/r-exomecopy/package.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-exomecopy/package.py diff --git a/var/spack/repos/builtin/packages/r-exomecopy/package.py b/var/spack/repos/builtin/packages/r-exomecopy/package.py new file mode 100644 index 00000000000..dbdcba29cd3 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-exomecopy/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 RExomecopy(RPackage): + """Detection of copy number variants (CNV) from exome sequencing samples, + including unpaired samples. The package implements a hidden Markov model + which uses positional covariates, such as background read depth and + GC-content, to simultaneously normalize and segment the samples into + regions of constant copy count.""" + + homepage = "http://www.bioconductor.org/packages/release/bioc/html/exomeCopy.html" + git = "https://git.bioconductor.org/packages/exomeCopy" + + version('1.32.0', commit='c9a884427d91b6d62ddc16a939bd808e389d3ea6') + + depends_on('r-iranges@2.5.27:', type=('build', 'run')) + depends_on('r-genomicranges@1.23.16:', type=('build', 'run')) + depends_on('r-rsamtools', type=('build', 'run')) + depends_on('r-genomeinfodb', type=('build', 'run')) From 7996bc809a085ceb215e2e8012194cd18b347ee9 Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Thu, 13 Feb 2020 19:52:43 -0600 Subject: [PATCH 028/238] New package: r-exomedepth (#14884) This PR adds the r-exomedepth package and r-aod as a dependency. --- .../repos/builtin/packages/r-aod/package.py | 23 +++++++++++++++ .../builtin/packages/r-exomedepth/package.py | 29 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-aod/package.py create mode 100644 var/spack/repos/builtin/packages/r-exomedepth/package.py diff --git a/var/spack/repos/builtin/packages/r-aod/package.py b/var/spack/repos/builtin/packages/r-aod/package.py new file mode 100644 index 00000000000..f221cf661df --- /dev/null +++ b/var/spack/repos/builtin/packages/r-aod/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 RAod(RPackage): + """Provides a set of functions to analyse overdispersed counts or + proportions. Most of the methods are already available elsewhere but are + scattered in different packages. The proposed functions should be + considered as complements to more sophisticated methods such as generalized + estimating equations (GEE) or generalized linear mixed effect models + (GLMM).""" + + homepage = "https://cloud.r-project.org/package=aod" + url = "https://cloud.r-project.org/src/contrib/aod_1.3.1.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/aod" + + version('1.3.1', sha256='052d8802500fcfdb3b37a8e3e6f3fbd5c3a54e48c3f68122402d2ea3a15403bc') + + depends_on('r@2.10:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-exomedepth/package.py b/var/spack/repos/builtin/packages/r-exomedepth/package.py new file mode 100644 index 00000000000..972c92c0b49 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-exomedepth/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 RExomedepth(RPackage): + """Calls copy number variants (CNVs) from targeted sequence data, typically + exome sequencing experiments designed to identify the genetic basis of + Mendelian disorders.""" + + homepage = "https://cloud.r-project.org/package=ExomeDepth" + url = "https://cloud.r-project.org/src/contrib/ExomeDepth_1.1.15.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/ExomeDepth" + + version('1.1.15', sha256='112bcb536f5766d9d0b55e064feedd6727ccab14cb1edfdba1f0d7b890e55ad2') + + depends_on('r@3.4.0:', type=('build', 'run')) + depends_on('r-biostrings', type=('build', 'run')) + depends_on('r-iranges', type=('build', 'run')) + depends_on('r-rsamtools', type=('build', 'run')) + depends_on('r-genomicranges@1.23.0:', type=('build', 'run')) + depends_on('r-aod', type=('build', 'run')) + depends_on('r-vgam@0.8.4:', type=('build', 'run')) + depends_on('r-genomicalignments', type=('build', 'run')) + depends_on('r-dplyr', type=('build', 'run')) + depends_on('r-magrittr', type=('build', 'run')) From 690ed2fe98067de5cd70d88c9089be351ebf84b8 Mon Sep 17 00:00:00 2001 From: "Dr. Christian Tacke" <58549698+ChristianTackeGSI@users.noreply.github.com> Date: Fri, 14 Feb 2020 02:55:41 +0100 Subject: [PATCH 029/238] [rsync] Use popt and zlib (#14755) popt and zlib are available as spack packages. So use them instead of building internal ones. --- var/spack/repos/builtin/packages/rsync/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/rsync/package.py b/var/spack/repos/builtin/packages/rsync/package.py index d89467c13d6..078f11e630c 100644 --- a/var/spack/repos/builtin/packages/rsync/package.py +++ b/var/spack/repos/builtin/packages/rsync/package.py @@ -14,3 +14,9 @@ class Rsync(AutotoolsPackage): version('3.1.3', sha256='55cc554efec5fdaad70de921cd5a5eeb6c29a95524c715f3bbf849235b0800c0') version('3.1.2', sha256='ecfa62a7fa3c4c18b9eccd8c16eaddee4bd308a76ea50b5c02a5840f09c0a1c2') version('3.1.1', sha256='7de4364fcf5fe42f3bdb514417f1c40d10bbca896abe7e7f2c581c6ea08a2621') + + depends_on('zlib') + depends_on('popt') + + def configure_args(self): + return ['--with-included-zlib=no'] From 4fa29ceb504087c25fd85c16abc150831af29b4e Mon Sep 17 00:00:00 2001 From: Kai Torben Ohlhus Date: Fri, 14 Feb 2020 10:59:34 +0900 Subject: [PATCH 030/238] openblas: add variant +consistentFPCSR (#14876) Add the OpenBLAS variant `+consistentFPCSR`, by default `False`, which adds the compile definition `CONSISTENT_FPCSR=1` as documented in OpenBLAS `Makefile.rule`. --- var/spack/repos/builtin/packages/openblas/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index b3ce744bf8b..607a41e85d5 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -37,6 +37,7 @@ class Openblas(MakefilePackage): variant('ilp64', default=False, description='Force 64-bit Fortran native integers') variant('pic', default=True, description='Build position independent code') variant('shared', default=True, description='Build shared libraries') + variant('consistentFPCSR', default=False, description='Synchronize FP CSR between threads (x86/x86_64 only)') variant( 'threads', default='none', @@ -234,6 +235,11 @@ def make_defs(self): if '+ilp64' in self.spec: make_defs += ['INTERFACE64=1'] + # Synchronize floating-point control and status register (FPCSR) + # between threads (x86/x86_64 only). + if '+consistentFPCSR' in self.spec: + make_defs += ['CONSISTENT_FPCSR=1'] + # Prevent errors in `as` assembler from newer instructions if self.spec.satisfies('%gcc@:4.8.4'): make_defs.append('NO_AVX2=1') From 8beb42e7490a2210070efc78e5ea5cb733278789 Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Thu, 13 Feb 2020 20:00:39 -0600 Subject: [PATCH 031/238] New package: r-codex (#14869) This PR adds the r-codex package. - new package: r-bsgenome-hsapiens-ucsc-hg19 --- .../r-bsgenome-hsapiens-ucsc-hg19/package.py | 19 ++++++++++++ .../repos/builtin/packages/r-codex/package.py | 31 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-bsgenome-hsapiens-ucsc-hg19/package.py create mode 100644 var/spack/repos/builtin/packages/r-codex/package.py diff --git a/var/spack/repos/builtin/packages/r-bsgenome-hsapiens-ucsc-hg19/package.py b/var/spack/repos/builtin/packages/r-bsgenome-hsapiens-ucsc-hg19/package.py new file mode 100644 index 00000000000..bc536f9ccde --- /dev/null +++ b/var/spack/repos/builtin/packages/r-bsgenome-hsapiens-ucsc-hg19/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 RBsgenomeHsapiensUcscHg19(RPackage): + """Full genome sequences for Homo sapiens (Human) as provided by UCSC + (hg19, Feb. 2009) and stored in Biostrings objects.""" + + # This is a bioconductor package but there is no available git repo. + homepage = "http://www.bioconductor.org/packages/release/data/annotation/html/BSgenome.Hsapiens.UCSC.hg19.html" + url = "http://www.bioconductor.org/packages/release/data/annotation/src/contrib/BSgenome.Hsapiens.UCSC.hg19_1.4.0.tar.gz" + + version('1.4.0', sha256='88f515e5c27dd11d10654250e3a0a9389e4dfeb0b1c2d43419aa7086e6c516f8') + + depends_on('r-bsgenome@1.33.5:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-codex/package.py b/var/spack/repos/builtin/packages/r-codex/package.py new file mode 100644 index 00000000000..11b161ce432 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-codex/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 RCodex(RPackage): + """A normalization and copy number variation calling procedure for whole + exome DNA sequencing data. CODEX relies on the availability of multiple + samples processed using the same sequencing pipeline for normalization, and + does not require matched controls. The normalization model in CODEX + includes terms that specifically remove biases due to GC content, exon + length and targeting and amplification efficiency, and latent systemic + artifacts. CODEX also includes a Poisson likelihood-based recursive + segmentation procedure that explicitly models the count-based exome + sequencing data.""" + + homepage = "http://www.bioconductor.org/packages/release/bioc/html/CODEX.html" + git = "https://git.bioconductor.org/packages/CODEX" + + version('1.18.0', commit='9a95cccc7ff3fe587636317e21e39a07dddf80bc') + + depends_on('r@3.2.3:', type=('build', 'run')) + depends_on('r-rsamtools', type=('build', 'run')) + depends_on('r-genomeinfodb', type=('build', 'run')) + depends_on('r-bsgenome-hsapiens-ucsc-hg19', type=('build', 'run')) + depends_on('r-iranges', type=('build', 'run')) + depends_on('r-biostrings', type=('build', 'run')) + depends_on('r-s4vectors', type=('build', 'run')) From e0dfc3ddbf4bc92ddf206cbc3e55ace32928c174 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 13 Feb 2020 20:07:09 -0600 Subject: [PATCH 032/238] Fix shell detection: zsh5 -> zsh (#14858) --- share/spack/setup-env.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 207e9c4a801..c3d9ef260cd 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -212,7 +212,8 @@ _spack_determine_shell() { # If procfs is present this seems a more reliable # way to detect the current shell _sp_exe=$(readlink /proc/$$/exe) - basename ${_sp_exe} + # Shell may contain number, like zsh5 instead of zsh + basename ${_sp_exe} | tr -d '0123456789' elif [ -n "${BASH:-}" ]; then echo bash elif [ -n "${ZSH_NAME:-}" ]; then From d524abad20c17ddeb1031b803eeefa78928610de Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Thu, 13 Feb 2020 18:10:02 -0800 Subject: [PATCH 033/238] Updated both cub and nccl versions. Fixed a bug in the cub download (#14852) url. --- var/spack/repos/builtin/packages/cub/package.py | 8 +++++++- var/spack/repos/builtin/packages/nccl/package.py | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cub/package.py b/var/spack/repos/builtin/packages/cub/package.py index 2e3480df8f7..5c1764e3455 100644 --- a/var/spack/repos/builtin/packages/cub/package.py +++ b/var/spack/repos/builtin/packages/cub/package.py @@ -11,8 +11,14 @@ class Cub(Package): and other utilities for CUDA kernel programming.""" homepage = "https://nvlabs.github.com/cub" - url = "https://github.com/NVlabs/cub/archive/1.7.1.zip" + url = "https://github.com/NVlabs/cub/archive/v1.7.1.zip" + git = "https://github.com/NVlabs/cub.git" + version('1.8.0', sha256='6bfa06ab52a650ae7ee6963143a0bbc667d6504822cbd9670369b598f18c58c3') + version('1.7.5', sha256='8f8e0b101324a9839003ff1154c8439137cd38b2039f403a92e76d5c52cee23f') + version('1.7.4', sha256='20a1a39fd97e5da7f40f5f2e7fd73fd2ea59f9dc4bb8a6c5f228aa543e727e31') + version('1.7.3', sha256='b7ead9e291d34ffa8074243541c1380d63be63f88de23de8ee548db573b72ebe') + version('1.7.2', sha256='09b478d4df8e6c62f8425d23ade9e2a52bc279a20057c7d22ce2160f3923764a') version('1.7.1', sha256='50b8777b83093fdfdab429a61fccdbfbbb991b3bbc08385118e5ad58e8f62e1d') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/nccl/package.py b/var/spack/repos/builtin/packages/nccl/package.py index 7fbc7805258..e1668346752 100644 --- a/var/spack/repos/builtin/packages/nccl/package.py +++ b/var/spack/repos/builtin/packages/nccl/package.py @@ -12,6 +12,9 @@ class Nccl(MakefilePackage): homepage = "https://github.com/NVIDIA/nccl" url = "https://github.com/NVIDIA/nccl/archive/v2.4.8-1.tar.gz" + version('2.5.7-1', sha256='781a6bb2278566be4abbdf22b2fa19afc7306cff4b312c82bd782979b368014e') + version('2.5.6-2', sha256='8a30e0b4813a825592872fcbeeede22a659e2c399074dcce02960591dc81387d') + version('2.5.6-1', sha256='38a37d98be11f43232b988719226866b407f08b9666dcaf345796bd8f354ef54') version('2.4.8-1', sha256='e2260da448ebbebe437f74768a346d28c74eabdb92e372a3dc6652a626318924') version('2.4.6-1', sha256='ea4421061a7b9c454f2e088f68bfdbbcefab80ce81cafc70ee6c7742b1439591') version('2.4.2-1', sha256='e3dd04b22eb541394bd818e5f78ac23a09cc549690d5d55d6fccc1a36155385a') From c607288a7c9a63d6b36b455b9c99142546050398 Mon Sep 17 00:00:00 2001 From: Sajid Ali <30510036+s-sajid-ali@users.noreply.github.com> Date: Thu, 13 Feb 2020 20:16:34 -0600 Subject: [PATCH 034/238] fix env vars before install (#14575) --- var/spack/repos/builtin/packages/python/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 37d65c54c00..978548163bd 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -212,6 +212,9 @@ def setup_build_environment(self, env): # Need this to allow python build to find the Python installation. env.set('MACOSX_DEPLOYMENT_TARGET', platform.mac_ver()[0]) + env.unset('PYTHONPATH') + env.unset('PYTHONHOME') + def configure_args(self): spec = self.spec config_args = [] From 8c05221bc6b7dad8829b83d26402fcddf103719a Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 14 Feb 2020 03:32:55 +0100 Subject: [PATCH 035/238] spack compiler info: quick fix for failing command (#14928) fixes #14927 --- lib/spack/spack/cmd/compiler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index c9647898ef0..625466f8c7f 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -142,7 +142,7 @@ def compiler_info(args): for flag, flag_value in iteritems(c.flags): print("\t\t%s = %s" % (flag, flag_value)) if len(c.environment) != 0: - if len(c.environment['set']) != 0: + if len(c.environment.get('set', {})) != 0: print("\tenvironment:") print("\t set:") for key, value in iteritems(c.environment['set']): From 978a3bb7efbd8103ce0fee03deac01ec9089aed9 Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Fri, 14 Feb 2020 15:00:58 +0100 Subject: [PATCH 036/238] py-whichcraft: new package (#14907) * py-whichcraft: new package * address comment --- .../builtin/packages/py-whichcraft/package.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-whichcraft/package.py diff --git a/var/spack/repos/builtin/packages/py-whichcraft/package.py b/var/spack/repos/builtin/packages/py-whichcraft/package.py new file mode 100644 index 00000000000..24dec3f8886 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-whichcraft/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 PyWhichcraft(PythonPackage): + """Cross-platform cross-python shutil.which functionality.""" + + homepage = "https://github.com/pydanny/whichcraft" + url = "https://github.com/pydanny/whichcraft/archive/0.4.1.tar.gz" + + version('0.4.1', sha256='66875022b3b9da8ddf7ab236c15670a782094550d07daeb51ceba4bc61b6b4aa') + + depends_on('py-setuptools', type='build') From e65aa7569e754c69bac92745d2c4e5739e9d93a1 Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 14 Feb 2020 11:06:10 -0700 Subject: [PATCH 037/238] docs: fix typo in arch in build settings examples (#14998) --- lib/spack/docs/build_settings.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst index 45f54084aed..b141f2b717c 100644 --- a/lib/spack/docs/build_settings.rst +++ b/lib/spack/docs/build_settings.rst @@ -58,9 +58,9 @@ directory. Here's an example of an external configuration: packages: openmpi: paths: - openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3 - openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug - openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel + 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 This example lists three installations of OpenMPI, one built with GCC, one built with GCC and debug information, and another built with Intel. @@ -107,9 +107,9 @@ be: packages: openmpi: paths: - openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3 - openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug - openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel + 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 buildable: False The addition of the ``buildable`` flag tells Spack that it should never build From 3c28e72d2f474a3a739725e906c7cea4b8be8f4d Mon Sep 17 00:00:00 2001 From: Scott Wittenburg Date: Fri, 14 Feb 2020 11:13:30 -0700 Subject: [PATCH 038/238] cuda: add libxml2 as a dependency for newer versions (#14758) --- var/spack/repos/builtin/packages/cuda/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index df71f626086..13675fb7744 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -73,6 +73,14 @@ class Cuda(Package): # Mojave support -- only macOS High Sierra 10.13 is supported. conflicts('arch=darwin-mojave-x86_64') + depends_on('libxml2', when='@10.1.243:') + + def setup_build_environment(self, env): + if self.spec.satisfies('@10.1.243:'): + libxml2_home = self.spec['libxml2'].prefix + env.set('LIBXML2HOME', libxml2_home) + env.append_path('LD_LIBRARY_PATH', libxml2_home.lib) + def setup_run_environment(self, env): env.set('CUDA_HOME', self.prefix) From baafa7ec84050662660d6bff2a53ff9ff1744f8f Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Fri, 14 Feb 2020 16:10:28 -0600 Subject: [PATCH 039/238] Buildcache creation/extraction use temp tarfile to preserve hardlinks during copy to/from prefix. (#15003) * Buildcache creation change the way prefix is copied to workdir. * install_tree copies hardlinked files * tarfile creates hardlinked files on extraction. * create a temporary tarfile from prefix and extract it to workdir * Use temp tarfile to move workdir to prefix to preserve hardlinks instead of copying --- lib/spack/spack/binary_distribution.py | 38 ++++++++++++++++++++------ lib/spack/spack/test/packaging.py | 18 +----------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index 515a6166d21..49f8416d6f8 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -18,7 +18,7 @@ from six.moves.urllib.error import URLError import llnl.util.tty as tty -from llnl.util.filesystem import mkdirp, install_tree +from llnl.util.filesystem import mkdirp import spack.cmd import spack.config as config @@ -308,7 +308,7 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False, tmpdir = tempfile.mkdtemp() cache_prefix = build_cache_prefix(tmpdir) - tarfile_name = tarball_name(spec, '.tar.gz') + tarfile_name = tarball_name(spec, '.tar.bz2') tarfile_dir = os.path.join(cache_prefix, tarball_directory_name(spec)) tarfile_path = os.path.join(tarfile_dir, tarfile_name) spackfile_path = os.path.join( @@ -342,8 +342,18 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False, raise NoOverwriteException(url_util.format(remote_specfile_path)) # make a copy of the install directory to work with - workdir = os.path.join(tempfile.mkdtemp(), os.path.basename(spec.prefix)) - install_tree(spec.prefix, workdir, symlinks=True) + workdir = os.path.join(tmpdir, os.path.basename(spec.prefix)) + # install_tree copies hardlinks + # create a temporary tarfile from prefix and exract it to workdir + # tarfile preserves hardlinks + temp_tarfile_name = tarball_name(spec, '.tar') + temp_tarfile_path = os.path.join(tarfile_dir, temp_tarfile_name) + with closing(tarfile.open(temp_tarfile_path, 'w')) as tar: + tar.add(name='%s' % spec.prefix, + arcname='.') + with closing(tarfile.open(temp_tarfile_path, 'r')) as tar: + tar.extractall(workdir) + os.remove(temp_tarfile_path) # create info for later relocation and create tar write_buildinfo_file(spec.prefix, workdir, rel=rel) @@ -368,7 +378,7 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False, tty.die(e) # create compressed tarball of the install prefix - with closing(tarfile.open(tarfile_path, 'w:gz')) as tar: + with closing(tarfile.open(tarfile_path, 'w:bz2')) as tar: tar.add(name='%s' % workdir, arcname='%s' % os.path.basename(spec.prefix)) # remove copy of install directory @@ -407,8 +417,8 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False, sign_tarball(key, force, specfile_path) # put tarball, spec and signature files in .spack archive with closing(tarfile.open(spackfile_path, 'w')) as tar: - tar.add(name='%s' % tarfile_path, arcname='%s' % tarfile_name) - tar.add(name='%s' % specfile_path, arcname='%s' % specfile_name) + tar.add(name=tarfile_path, arcname='%s' % tarfile_name) + tar.add(name=specfile_path, arcname='%s' % specfile_name) if not unsigned: tar.add(name='%s.asc' % specfile_path, arcname='%s.asc' % specfile_name) @@ -579,7 +589,7 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False, stagepath = os.path.dirname(filename) spackfile_name = tarball_name(spec, '.spack') spackfile_path = os.path.join(stagepath, spackfile_name) - tarfile_name = tarball_name(spec, '.tar.gz') + tarfile_name = tarball_name(spec, '.tar.bz2') tarfile_path = os.path.join(tmpdir, tarfile_name) specfile_name = tarball_name(spec, '.spec.yaml') specfile_path = os.path.join(tmpdir, specfile_name) @@ -638,7 +648,17 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False, # so the pathname should be the same now that the directory layout # is confirmed workdir = os.path.join(tmpdir, os.path.basename(spec.prefix)) - install_tree(workdir, spec.prefix, symlinks=True) + # install_tree copies hardlinks + # create a temporary tarfile from prefix and exract it to workdir + # tarfile preserves hardlinks + temp_tarfile_name = tarball_name(spec, '.tar') + temp_tarfile_path = os.path.join(tmpdir, temp_tarfile_name) + with closing(tarfile.open(temp_tarfile_path, 'w')) as tar: + tar.add(name='%s' % workdir, + arcname='.') + with closing(tarfile.open(temp_tarfile_path, 'r')) as tar: + tar.extractall(spec.prefix) + os.remove(temp_tarfile_path) # cleanup os.remove(tarfile_path) diff --git a/lib/spack/spack/test/packaging.py b/lib/spack/spack/test/packaging.py index edad8e29fa4..8f11b8ec993 100644 --- a/lib/spack/spack/test/packaging.py +++ b/lib/spack/spack/test/packaging.py @@ -107,11 +107,6 @@ def test_buildcache(mock_archive, tmpdir): buildcache.buildcache(parser, args) files = os.listdir(spec.prefix) - assert 'link_to_dummy.txt' in files - assert 'dummy.txt' in files - assert os.path.realpath( - os.path.join(spec.prefix, 'link_to_dummy.txt') - ) == os.path.realpath(os.path.join(spec.prefix, 'dummy.txt')) # create build cache with relative path and signing args = parser.parse_args( @@ -129,13 +124,6 @@ def test_buildcache(mock_archive, tmpdir): args = parser.parse_args(['install', '-f', str(pkghash)]) buildcache.buildcache(parser, args) - files = os.listdir(spec.prefix) - assert 'link_to_dummy.txt' in files - assert 'dummy.txt' in files - assert os.path.realpath( - os.path.join(spec.prefix, 'link_to_dummy.txt') - ) == os.path.realpath(os.path.join(spec.prefix, 'dummy.txt')) - else: # create build cache without signing args = parser.parse_args( @@ -152,10 +140,6 @@ def test_buildcache(mock_archive, tmpdir): files = os.listdir(spec.prefix) assert 'link_to_dummy.txt' in files assert 'dummy.txt' in files - assert os.path.realpath( - os.path.join(spec.prefix, 'link_to_dummy.txt') - ) == os.path.realpath(os.path.join(spec.prefix, 'dummy.txt')) - # test overwrite install without verification args = parser.parse_args(['install', '-f', '-u', str(pkghash)]) buildcache.buildcache(parser, args) @@ -242,7 +226,7 @@ def test_relocate_links(tmpdir): old_src = os.path.join(old_dir, filename) os.symlink(old_src, filename) filenames = [filename] - new_dir = '/opt/rh/devtoolset/' + new_dir = '/opt/rh/devtoolset' relocate_links(filenames, old_dir, new_dir) assert os.path.realpath(filename) == os.path.join(new_dir, filename) From b688bb549b984bae1b3b2bb2e774a05778f862c0 Mon Sep 17 00:00:00 2001 From: Keita Iwabuchi Date: Fri, 14 Feb 2020 22:34:32 -0800 Subject: [PATCH 040/238] Add a new package: Metall (#14903) * Add a new package: Metall * Fix errors in metall/package.py * Update var/spack/repos/builtin/packages/metall/package.py Change to https style URL Co-Authored-By: Adam J. Stewart * Update in metall/package.py. Change Metall to depend on Boost always * Update in metall/package.py. Change to install Boost with the default variants * Update metall/package.py. Removed a comment Co-authored-by: Adam J. Stewart --- .../repos/builtin/packages/metall/package.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 var/spack/repos/builtin/packages/metall/package.py diff --git a/var/spack/repos/builtin/packages/metall/package.py b/var/spack/repos/builtin/packages/metall/package.py new file mode 100644 index 00000000000..cec7669ad2f --- /dev/null +++ b/var/spack/repos/builtin/packages/metall/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 Metall(CMakePackage): + """An allocator for persistent memory""" + + homepage = "https://github.com/LLNL/metall" + git = "https://github.com/LLNL/metall.git" + + maintainers = ['KIwabuchi', 'rogerpearce', 'mayagokhale'] + + version('develop', branch='develop') + + depends_on('boost@1.64:', type=('build', 'link')) + + def cmake_args(self): + args = [] + args.append('-DINSTALL_HEADER_ONLY=ON') + return args From 3f5d889d2b6b48bd9695d19ae63a0379e4fd870e Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Sat, 15 Feb 2020 21:34:11 -0600 Subject: [PATCH 041/238] cloc: add version 1.84 (#15012) --- var/spack/repos/builtin/packages/cloc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cloc/package.py b/var/spack/repos/builtin/packages/cloc/package.py index aa4f237c71d..d5e8feeffe5 100644 --- a/var/spack/repos/builtin/packages/cloc/package.py +++ b/var/spack/repos/builtin/packages/cloc/package.py @@ -13,6 +13,7 @@ class Cloc(Package): homepage = "https://github.com/AlDanial/cloc/" url = "https://github.com/AlDanial/cloc/releases/download/1.74/cloc-1.74.tar.gz" + version('1.84', sha256='c3f0a6bd2319110418ccb3e55a7a1b6d0edfd7528bfd2ae5d530938abe90f254') version('1.80', sha256='082f53530eee3f9ee84ec449eca59a77ff114250cd7daf9519679537b5b21d67') version('1.74', sha256='55ac423d5766c74236700a47838ed66bea47ba42e1d594fdd894074ba3eb0567') From 4a7e4655ac86e5371befbb579709ae401344b650 Mon Sep 17 00:00:00 2001 From: Justin S <3630356+codeandkey@users.noreply.github.com> Date: Sat, 15 Feb 2020 21:48:26 -0600 Subject: [PATCH 042/238] mafft: add 7.453 (#15006) --- var/spack/repos/builtin/packages/mafft/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mafft/package.py b/var/spack/repos/builtin/packages/mafft/package.py index ab14e529e3a..4c8e0619252 100644 --- a/var/spack/repos/builtin/packages/mafft/package.py +++ b/var/spack/repos/builtin/packages/mafft/package.py @@ -15,6 +15,7 @@ class Mafft(Package): homepage = "http://mafft.cbrc.jp/alignment/software/index.html" url = "http://mafft.cbrc.jp/alignment/software/mafft-7.221-with-extensions-src.tgz" + version('7.453', sha256='8b2f0d6249c575f80cd51278ab45dd149b8ac9b159adac20fd1ddc7a6722af11') version('7.407', sha256='1840b51a0b93f40b4d6076af996ee46396428d8dbaf7ba1d847abff9cb1463e5') version('7.221', sha256='0bc78111966d9b00ddfa14fa217fa5bb0c593a558674a13f02dca7bcd51f7fcf') From e5e6791d97967084b05c5811e119ea268cea8289 Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Sat, 15 Feb 2020 21:50:54 -0600 Subject: [PATCH 043/238] package r-readbitmap Change jpeg dependency (#15004) This PR corrects the jpeg dependency in r-readbitmap to use the jpeg virtual dependency. --- var/spack/repos/builtin/packages/r-readbitmap/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/r-readbitmap/package.py b/var/spack/repos/builtin/packages/r-readbitmap/package.py index 3ade391413b..8773b3ff51b 100644 --- a/var/spack/repos/builtin/packages/r-readbitmap/package.py +++ b/var/spack/repos/builtin/packages/r-readbitmap/package.py @@ -24,5 +24,5 @@ class RReadbitmap(RPackage): depends_on('r-png', type=('build', 'run')) depends_on('r-tiff', type=('build', 'run')) - depends_on('libjpeg') + depends_on('jpeg') depends_on('libpng') From 2c0bfd071f97cd7452ad6876e56da80c258f5ce2 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:21:48 +0100 Subject: [PATCH 044/238] Add extra version of py-jupyter-client (#14996) --- var/spack/repos/builtin/packages/py-jupyter-client/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-jupyter-client/package.py b/var/spack/repos/builtin/packages/py-jupyter-client/package.py index 8224c0f6172..68b7f54ce12 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-client/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-client/package.py @@ -13,6 +13,7 @@ class PyJupyterClient(PythonPackage): url = "https://github.com/jupyter/jupyter_client/archive/4.4.0.tar.gz" version('5.3.4', sha256='2af6f0e0e4d88009b11103490bea0bfb405c1c470e226c2b7b17c10e5dda9734') + version('5.2.4', sha256='61ee1e02fd78b025f9720963e1fe96d8d29f44bc250ca7e7a46bc35a174eb7d6') version('4.4.0', sha256='2fda7fe1af35f0b4a77c4a2fd4ee38ac3666ed7f4d92a5b6ff8aaf764c38e199') version('4.3.0', sha256='90b6ea3ced910ed94c5d558373490a81b33c672d877c1ffdc76b281e3216f1f6') version('4.2.2', sha256='bf3e8ea4c44f07dbe2991e41031f6dab242734be424f4d40b72cc58a12c7d2ca') From bd24d53cebff77b42c41b07ca16fc682b63b54a0 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:24:44 +0100 Subject: [PATCH 045/238] Add extra version of py-jpype1; add numpy as optional (variant) dependency (#14991) * Add extra version of py-jpype1 * Add numpy as optional (variant) dependency --- var/spack/repos/builtin/packages/py-jpype1/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-jpype1/package.py b/var/spack/repos/builtin/packages/py-jpype1/package.py index 7b1424efcbc..4a27b240182 100644 --- a/var/spack/repos/builtin/packages/py-jpype1/package.py +++ b/var/spack/repos/builtin/packages/py-jpype1/package.py @@ -13,13 +13,16 @@ class PyJpype1(PythonPackage): homepage = "https://github.com/originell/jpype" url = "https://pypi.io/packages/source/J/JPype1/JPype1-0.6.2.tar.gz" + version('0.6.3', sha256='6841523631874a731e1f94e1b1f130686ad3772030eaa3b6946256eeb1d10dd1') version('0.6.2', sha256='99206412d80b9d5a81a7cc205267ca63554403eb57f13420302e2f39bfad7f25') version('0.6.1', sha256='0d366228b7b37b0266184161cc7ea1ce58f60199f6ec9451985149ea873774be') version('0.6.0', sha256='f5d783520cb4c30595c3bc509065e30fc292ec7cfb57045141eae77c518bcdb0') + variant('numpy', default=False, description='Build numpy extensions') + depends_on('python@2.6:') depends_on('py-setuptools', type='build') depends_on('java', type=('build', 'run')) # extra requirements - # depends_on('py-numpy@1.6:', type=('build', 'run')) + depends_on('py-numpy@1.6:', type=('build', 'run'), when='+numpy') From bff3a087ec70ab07fe163394826a41c33f6bc38f Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:27:53 +0100 Subject: [PATCH 046/238] Add extra version of py-jinja2 (#14989) --- var/spack/repos/builtin/packages/py-jinja2/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-jinja2/package.py b/var/spack/repos/builtin/packages/py-jinja2/package.py index dd9f8fee2ad..588367c0f58 100644 --- a/var/spack/repos/builtin/packages/py-jinja2/package.py +++ b/var/spack/repos/builtin/packages/py-jinja2/package.py @@ -17,6 +17,7 @@ class PyJinja2(PythonPackage): import_modules = ['jinja2'] version('2.10.3', sha256='9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de') + version('2.10.1', sha256='065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013') version('2.10', sha256='f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4') version('2.9.6', sha256='ddaa01a212cd6d641401cb01b605f4a4d9f37bfc93043d7f760ec70fb99ff9ff') version('2.8', sha256='bc1ff2ff88dbfacefde4ddde471d1417d3b304e8df103a7a9437d47269201bf4') From 8b5cc1e76f319435edc195f8ec355c3765a64ea4 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:32:28 +0100 Subject: [PATCH 047/238] Add extra version of py-ipython (#14986) --- var/spack/repos/builtin/packages/py-ipython/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py index 2e2cfc6966d..d21d272a4b1 100644 --- a/var/spack/repos/builtin/packages/py-ipython/package.py +++ b/var/spack/repos/builtin/packages/py-ipython/package.py @@ -13,6 +13,7 @@ class PyIpython(PythonPackage): url = "https://pypi.io/packages/source/i/ipython/ipython-2.3.1.tar.gz" version('7.3.0', sha256='06de667a9e406924f97781bda22d5d76bfb39762b678762d86a466e63f65dc39') + version('5.8.0', sha256='4bac649857611baaaf76bc82c173aa542f7486446c335fe1a6c05d0d491c8906') version('5.1.0', sha256='7ef4694e1345913182126b219aaa4a0047e191af414256da6772cf249571b961') version('3.1.0', sha256='532092d3f06f82b1d8d1e5c37097eae19fcf025f8f6a4b670dd49c3c338d5624') version('2.3.1', sha256='3e98466aa2fe54540bcba9aa6e01a39f40110d67668c297340c4b9514b7cc49c') From 4db0eb4917b988e458723931880bffb8966bcc2b Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:33:04 +0100 Subject: [PATCH 048/238] Add extra version of py-ipykernel (#14985) --- .../builtin/packages/py-ipykernel/package.py | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-ipykernel/package.py b/var/spack/repos/builtin/packages/py-ipykernel/package.py index 21c210f5d14..f6ce9facb10 100644 --- a/var/spack/repos/builtin/packages/py-ipykernel/package.py +++ b/var/spack/repos/builtin/packages/py-ipykernel/package.py @@ -12,17 +12,18 @@ class PyIpykernel(PythonPackage): homepage = "https://pypi.python.org/pypi/ipykernel" url = "https://github.com/ipython/ipykernel/archive/4.5.0.tar.gz" - version('5.1.0', sha256='30f01a2a1470d3fabbad03f5c43606c1bc2142850fc4ccedcf44281664ae9122') - version('4.5.0', sha256='c5ec5130f5f7eda71345b9ef638c9213c4c2f41610a9ad338a0f1d0819421adf') - version('4.4.1', sha256='62fe16252e40fb3d443fcf31fc52e5596965cf17620571c10ea64502a6d51db7') - version('4.4.0', sha256='a042bf202c5675da58dba66b9bd1e7aecc62d4f82058508b620a09e2f7baa0f2') - version('4.3.1', sha256='f38b366053567c36464ae6d04d72ed72d74f77e63d49a6fa38826278ed7848fd') - version('4.3.0', sha256='cf21ee03b258ee5d1fcef8189c5cecba017e22f3517ff8d49730102ff74d61af') - version('4.2.2', sha256='9cfa31b893a430ce0800a0780b6326a15658543651d2116849e0283ec39e67fc') - version('4.2.1', sha256='12c30f3d267068db4d31897d12653908cf543358faed5bad37d60eede6a909c4') - version('4.2.0', sha256='43f6847f816e4683842878e33c6c11d5311c2be9f1fe1f44c391f5abefd35e72') - version('4.1.1', sha256='59e7e1ca516b9ee109e9a51b942bda03ac8e214891956e787da997b252f5e736') - version('4.1.0', sha256='b72c3354ac12a219b9be928ff3b5125e5c861e9592fb4eb342f1d47592cb3740') + version('5.1.0', sha256='30f01a2a1470d3fabbad03f5c43606c1bc2142850fc4ccedcf44281664ae9122') + version('4.10.0', sha256='df2714fd0084085ed68876f75ab846202d261420b5f4069af6335b8df0475391') + version('4.5.0', sha256='c5ec5130f5f7eda71345b9ef638c9213c4c2f41610a9ad338a0f1d0819421adf') + version('4.4.1', sha256='62fe16252e40fb3d443fcf31fc52e5596965cf17620571c10ea64502a6d51db7') + version('4.4.0', sha256='a042bf202c5675da58dba66b9bd1e7aecc62d4f82058508b620a09e2f7baa0f2') + version('4.3.1', sha256='f38b366053567c36464ae6d04d72ed72d74f77e63d49a6fa38826278ed7848fd') + version('4.3.0', sha256='cf21ee03b258ee5d1fcef8189c5cecba017e22f3517ff8d49730102ff74d61af') + version('4.2.2', sha256='9cfa31b893a430ce0800a0780b6326a15658543651d2116849e0283ec39e67fc') + version('4.2.1', sha256='12c30f3d267068db4d31897d12653908cf543358faed5bad37d60eede6a909c4') + version('4.2.0', sha256='43f6847f816e4683842878e33c6c11d5311c2be9f1fe1f44c391f5abefd35e72') + version('4.1.1', sha256='59e7e1ca516b9ee109e9a51b942bda03ac8e214891956e787da997b252f5e736') + version('4.1.0', sha256='b72c3354ac12a219b9be928ff3b5125e5c861e9592fb4eb342f1d47592cb3740') depends_on('python@2.7:2.8,3.3:', type=('build', 'run')) depends_on('python@3.4:', when='@5:', type=('build', 'run')) From 8313de5be018ed1de6269d6dd39e89d1a548843f Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:35:23 +0100 Subject: [PATCH 049/238] Add extra version of py-ipaddress (#14984) --- var/spack/repos/builtin/packages/py-ipaddress/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-ipaddress/package.py b/var/spack/repos/builtin/packages/py-ipaddress/package.py index 357fb78d955..142bddd5fe4 100644 --- a/var/spack/repos/builtin/packages/py-ipaddress/package.py +++ b/var/spack/repos/builtin/packages/py-ipaddress/package.py @@ -14,6 +14,7 @@ class PyIpaddress(PythonPackage): url = "https://pypi.io/packages/source/i/ipaddress/ipaddress-1.0.23.tar.gz" version('1.0.23', sha256='b7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2') + version('1.0.22', sha256='b146c751ea45cad6188dd6cf2d9b757f6f4f8d6ffb96a023e6f2e26eea02a72c') version('1.0.18', sha256='5d8534c8e185f2d8a1fda1ef73f2c8f4b23264e8e30063feeb9511d492a413e1') depends_on('py-setuptools', type='build') From bcccf0d4e7964f5c98761c5d3c621ab1cb23dc0b Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:35:47 +0100 Subject: [PATCH 050/238] Add extra version of py-importlib-metadata (#14983) --- .../repos/builtin/packages/py-importlib-metadata/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-importlib-metadata/package.py b/var/spack/repos/builtin/packages/py-importlib-metadata/package.py index cd65b09ce0e..ba26126cf45 100644 --- a/var/spack/repos/builtin/packages/py-importlib-metadata/package.py +++ b/var/spack/repos/builtin/packages/py-importlib-metadata/package.py @@ -15,6 +15,7 @@ class PyImportlibMetadata(PythonPackage): version('1.2.0', sha256='41e688146d000891f32b1669e8573c57e39e5060e7f5f647aa617cd9a9568278') version('0.23', sha256='aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26') version('0.19', sha256='23d3d873e008a513952355379d93cbcab874c58f4f034ff657c7a87422fa64e8') + version('0.18', sha256='cb6ee23b46173539939964df59d3d72c3e0c1b5d54b84f1d8a7e912fe43612db') depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) depends_on('py-setuptools', type='build') From c92201e6ab2406e644bac14755aa08c26ffab298 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:44:28 +0100 Subject: [PATCH 051/238] Add extra version of py-decorator (#14980) --- var/spack/repos/builtin/packages/py-decorator/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-decorator/package.py b/var/spack/repos/builtin/packages/py-decorator/package.py index 9294dd5c496..80174932ee1 100644 --- a/var/spack/repos/builtin/packages/py-decorator/package.py +++ b/var/spack/repos/builtin/packages/py-decorator/package.py @@ -15,6 +15,7 @@ class PyDecorator(PythonPackage): url = "https://pypi.io/packages/source/d/decorator/decorator-4.4.0.tar.gz" version('4.4.0', sha256='86156361c50488b84a3f148056ea716ca587df2f0de1d34750d35c21312725de') + version('4.3.2', sha256='33cd704aea07b4c28b3eb2c97d288a06918275dac0ecebdaf1bc8a48d98adb9e') version('4.3.0', sha256='c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c') version('4.0.9', sha256='90022e83316363788a55352fe39cfbed357aa3a71d90e5f2803a35471de4bba8') From 7c88bb937dac2e3b9936f5b9d89c7961b58ed737 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:47:05 +0100 Subject: [PATCH 052/238] Add extra version of py-backports-abc (#14978) --- var/spack/repos/builtin/packages/py-backports-abc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-backports-abc/package.py b/var/spack/repos/builtin/packages/py-backports-abc/package.py index 5fec14d0aed..6457b6b320c 100644 --- a/var/spack/repos/builtin/packages/py-backports-abc/package.py +++ b/var/spack/repos/builtin/packages/py-backports-abc/package.py @@ -12,6 +12,7 @@ class PyBackportsAbc(PythonPackage): homepage = "https://github.com/cython/backports_abc" url = "https://github.com/cython/backports_abc/archive/0.4.tar.gz" + version('0.5', sha256='ca1872b55cc9e19ce7288670d360104d5aac88ff1d0a0e7ad6e97267705611f9') version('0.4', sha256='2b5c4e91e37ba8bcd3fb8fecc8530f941578fc2c911497da3f09bf5fec6a6705') depends_on('py-setuptools', type='build') From 959d9d236504edc7de27a06ad4f7e02d5e3b4879 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:47:28 +0100 Subject: [PATCH 053/238] Add extra version of py-certifi (#14977) --- var/spack/repos/builtin/packages/py-certifi/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-certifi/package.py b/var/spack/repos/builtin/packages/py-certifi/package.py index 68a1b9c4a90..bfd6eccfa0c 100644 --- a/var/spack/repos/builtin/packages/py-certifi/package.py +++ b/var/spack/repos/builtin/packages/py-certifi/package.py @@ -18,6 +18,7 @@ class PyCertifi(PythonPackage): version('2019.9.11', sha256='e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50') version('2019.6.16', sha256='945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695') + version('2019.3.9', sha256='b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae') version('2017.4.17', sha256='f7527ebf7461582ce95f7a9e03dd141ce810d40590834f4ec20cddd54234c10a') version('2017.1.23', sha256='81877fb7ac126e9215dfb15bfef7115fdc30e798e0013065158eed0707fd99ce') From 45ee708596015a319073a2da42a18846c2432369 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:48:10 +0100 Subject: [PATCH 054/238] Add extra version of py-coverage (#14976) --- var/spack/repos/builtin/packages/py-coverage/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-coverage/package.py b/var/spack/repos/builtin/packages/py-coverage/package.py index 8459b946992..4a8f5226148 100644 --- a/var/spack/repos/builtin/packages/py-coverage/package.py +++ b/var/spack/repos/builtin/packages/py-coverage/package.py @@ -13,6 +13,7 @@ class PyCoverage(PythonPackage): url = "https://pypi.io/packages/source/c/coverage/coverage-4.5.4.tar.gz" version('4.5.4', sha256='e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c') + version('4.5.3', sha256='9de60893fb447d1e797f6bf08fdf0dbcda0c1e34c1b06c92bd3a363c0ea8c609') version('4.3.4', sha256='eaaefe0f6aa33de5a65f48dd0040d7fe08cac9ac6c35a56d0a7db109c3e733df') version('4.0a6', sha256='85c7f3efceb3724ab066a3fcccc05b9b89afcaefa5b669a7e2222d31eac4728d') From 4f3287a9dc61bb18bb8efa9b0f1c877dd251dcbd Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 05:52:36 +0100 Subject: [PATCH 055/238] Add extra version of py-cython (#14974) --- var/spack/repos/builtin/packages/py-cython/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-cython/package.py b/var/spack/repos/builtin/packages/py-cython/package.py index 34a0d30a701..6ff687e9b26 100644 --- a/var/spack/repos/builtin/packages/py-cython/package.py +++ b/var/spack/repos/builtin/packages/py-cython/package.py @@ -22,6 +22,7 @@ class PyCython(PythonPackage): version('0.29.14', sha256='e4d6bb8703d0319eb04b7319b12ea41580df44fd84d83ccda13ea463c6801414') version('0.29.13', sha256='c29d069a4a30f472482343c866f7486731ad638ef9af92bfe5fca9c7323d638e') + version('0.29.10', sha256='26229570d6787ff3caa932fe9d802960f51a89239b990d275ae845405ce43857') version('0.29.7', sha256='55d081162191b7c11c7bfcb7c68e913827dfd5de6ecdbab1b99dab190586c1e8') version('0.29.5', sha256='9d5290d749099a8e446422adfb0aa2142c711284800fb1eb70f595101e32cbf1') version('0.29', sha256='94916d1ede67682638d3cc0feb10648ff14dc51fb7a7f147f4fedce78eaaea97') From 98c4d15655d4ca70cf173ca7d6d097353b6fec1d Mon Sep 17 00:00:00 2001 From: "Nichols A. Romero" Date: Sat, 15 Feb 2020 22:56:58 -0600 Subject: [PATCH 056/238] Flang - Support libomptarget offload to NVidia GPU (#15015) * Modify Flang NVidia GPU variant to make use of built-in CudaPackage * Add OpenMP Offload patch if March 2019 compiler is selected. * Flang parallel build has a race condition. * llvm-flang now uses built-in CudaPackage. * Add variant for different build releases. * Fix OpenMP target offload for NVidia GPUs. * Additional commong flags that are needed with comments. * NVidia BC required for libomp target requires special treatment. Use clang built in previous step to re-compile libomptarget. --- .../repos/builtin/packages/flang/package.py | 22 +++-- .../builtin/packages/llvm-flang/package.py | 85 +++++++++++++++++-- 2 files changed, 93 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/flang/package.py b/var/spack/repos/builtin/packages/flang/package.py index 853a8dfb35c..f0f49ae5068 100644 --- a/var/spack/repos/builtin/packages/flang/package.py +++ b/var/spack/repos/builtin/packages/flang/package.py @@ -8,7 +8,7 @@ import os -class Flang(CMakePackage): +class Flang(CMakePackage, CudaPackage): """Flang is a Fortran compiler targeting LLVM.""" homepage = "https://github.com/flang-compiler/flang" @@ -24,10 +24,10 @@ class Flang(CMakePackage): version('20180921', sha256='f33bd1f054e474f1e8a204bb6f78d42f8f6ecf7a894fdddc3999f7c272350784') version('20180612', sha256='6af858bea013548e091371a97726ac784edbd4ff876222575eaae48a3c2920ed') - # Variants - variant('nvptx', - default=False, - description='Target OpenMP offload to NVidia GPUs') + # Patched only relevant for March 2019 release with OpenMP Offload support + patch('https://github.com/flang-compiler/flang/commit/b342225a64692d2b9c3aff7658a8e4f94a8923eb.diff', + sha256='3bd2c7453131eaaf11328785a3031fa2298bdd0c02cfd5e2b478e6e847d5da43', + when='@20190329 +cuda') # Build dependency depends_on('cmake@3.8:', type='build') @@ -45,11 +45,15 @@ class Flang(CMakePackage): depends_on('pgmath@20180921', when='@20180921') depends_on('pgmath@20180612', when='@20180612') - depends_on('cuda', when='+nvptx', type=('run')) + depends_on('llvm-flang +cuda', when='+cuda') # conflicts - conflicts('+nvptx', when='@:20181226', - msg='OMP offload to NVidia GPUs available March 2019 or later') + conflicts('+cuda', when='@:20181226', + msg='OpenMP offload to NVidia GPUs available 20190329 or later') + + # Spurious problems running in parallel the Makefile + # generated by the configure + parallel = False def cmake_args(self): spec = self.spec @@ -67,7 +71,7 @@ def cmake_args(self): spec['python'].command.path) ] - if '+nvptx' in spec: + if '+cuda' in spec: options.append('-DFLANG_OPENMP_GPU_NVIDIA=ON') else: options.append('-DFLANG_OPENMP_GPU_NVIDIA=OFF') diff --git a/var/spack/repos/builtin/packages/llvm-flang/package.py b/var/spack/repos/builtin/packages/llvm-flang/package.py index 4c19e7b54ba..10001e23402 100644 --- a/var/spack/repos/builtin/packages/llvm-flang/package.py +++ b/var/spack/repos/builtin/packages/llvm-flang/package.py @@ -7,7 +7,7 @@ from spack import * -class LlvmFlang(CMakePackage): +class LlvmFlang(CMakePackage, CudaPackage): """LLVM-Flang is the Flang fork of LLVM needed by the Flang package.""" homepage = "https://github.com/flang-compiler" @@ -30,10 +30,23 @@ class LlvmFlang(CMakePackage): variant('all_targets', default=False, description='Build all supported targets') - # Build dependency + variant('build_type', default='Release', + description='The CMake build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel')) + + # Universal dependency depends_on('cmake@3.8:', type='build') depends_on('python@2.7:', type='build') + # openmp dependencies + depends_on('perl-data-dumper', type=('build')) + depends_on('hwloc') + + # libomptarget dependencies + depends_on('libelf', when='+cuda') + depends_on('libffi', when='+cuda') + depends_on('cuda@:9', when='+cuda') # llvm 7 not compatible with newer version of cuda + # LLVM-Flang Componentes: Driver, OpenMP resource(name='flang-driver', git='https://github.com/flang-compiler/flang-driver.git', @@ -142,10 +155,18 @@ class LlvmFlang(CMakePackage): def cmake_args(self): spec = self.spec - args = [] + # universal + args = [ + '-DLLVM_ENABLE_RTTI:BOOL=ON', + '-DLLVM_ENABLE_EH:BOOL=ON', + '-DCLANG_DEFAULT_OPENMP_RUNTIME:STRING=libomp', + ] args.append('-DPYTHON_EXECUTABLE={0}'.format( spec['python'].command.path)) + # needed by flang-driver + args.append('-DFLANG_LLVM_EXTENSIONS=ON') + if '+all_targets' not in spec: # all is default in cmake if spec.target.family == 'x86' or spec.target.family == 'x86_64': target = 'X86' @@ -162,7 +183,61 @@ def cmake_args(self): raise InstallError( 'Unsupported architecture: ' + spec.target.family) - args.append( - '-DLLVM_TARGETS_TO_BUILD:STRING=' + target) + if '+cuda' in spec: + args.append( + '-DLLVM_TARGETS_TO_BUILD:STRING=NVPTX;' + target) + else: + args.append( + '-DLLVM_TARGETS_TO_BUILD:STRING=' + target) + + # used by openmp + args.append('-DLIBOMP_USE_HWLOC=On') + args.append('-DLIBOMP_FORTRAN_MODULES=ON') + args.append('-DLIBOMP_ENABLE_SHARED=TRUE') + + # used by libomptarget for NVidia gpu + if '+cuda' in spec: + args.append('-DOPENMP_ENABLE_LIBOMPTARGET=ON') + cuda_arch_list = spec.variants['cuda_arch'].value + args.append('-DCUDA_TOOLKIT_ROOT_DIR=%s' % spec['cuda'].prefix) + args.append('-DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES={0}'.format( + ','.join(cuda_arch_list))) + args.append('-DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_{0}'.format( + cuda_arch_list[-1])) + else: + args.append('-DOPENMP_ENABLE_LIBOMPTARGET=OFF') return args + + @run_after("install") + def post_install(self): + spec = self.spec + + # Manual bootstrap needed to get NVidia BC compiled with the + # clang that was just built + if '+cuda' in spec: + ompdir = 'build-bootstrapped-omp' + # rebuild libomptarget to get bytecode runtime library files + with working_dir(ompdir, create=True): + args = [ + self.stage.source_path + '/projects/openmp', + '-DCMAKE_C_COMPILER:PATH={0}'.format( + spec.prefix.bin + '/clang'), + '-DCMAKE_CXX_COMPILER:PATH={0}'.format( + spec.prefix.bin + '/clang++'), + '-DCMAKE_INSTALL_PREFIX:PATH={0}'.format( + spec.prefix) + ] + args = args + self.cmake_args() + # args = self.cmake_args() + # enable CUDA bitcode + args.append('-DLIBOMPTARGET_NVPTX_ENABLE_BCLIB=true') + # work around bad libelf detection in libomptarget + args.append( + '-DCMAKE_CXX_FLAGS:String=-I{0} -I{1}'.format( + spec['libelf'].prefix.include, + spec['hwloc'].prefix.include)) + + cmake(*args) + make() + make('install') From ff71844bf626574de86ff62aa77dc9f9e595d458 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:01:24 +0100 Subject: [PATCH 057/238] Add extra version of py-attrs (#14969) --- var/spack/repos/builtin/packages/py-attrs/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-attrs/package.py b/var/spack/repos/builtin/packages/py-attrs/package.py index 0c772a6219b..cf9950c1ce2 100644 --- a/var/spack/repos/builtin/packages/py-attrs/package.py +++ b/var/spack/repos/builtin/packages/py-attrs/package.py @@ -15,6 +15,7 @@ class PyAttrs(PythonPackage): import_modules = ['attr'] version('19.2.0', sha256='f913492e1663d3c36f502e5e9ba6cd13cf19d7fab50aa13239e420fef95e1396') + version('19.1.0', sha256='f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399') version('18.1.0', sha256='e0d0eb91441a3b53dab4d9b743eafc1ac44476296a2053b6ca3af0b139faf87b') version('16.3.0', sha256='80203177723e36f3bbe15aa8553da6e80d47bfe53647220ccaa9ad7a5e473ccc') From ad7c11c4821902d8c329ee5c01929181426925e0 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:01:53 +0100 Subject: [PATCH 058/238] Add extra version of py-astroid (#14968) --- var/spack/repos/builtin/packages/py-astroid/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-astroid/package.py b/var/spack/repos/builtin/packages/py-astroid/package.py index c75781daa97..34cd769a0b9 100644 --- a/var/spack/repos/builtin/packages/py-astroid/package.py +++ b/var/spack/repos/builtin/packages/py-astroid/package.py @@ -14,6 +14,7 @@ class PyAstroid(PythonPackage): url = "https://github.com/PyCQA/astroid/archive/astroid-1.4.5.tar.gz" version('2.2.0', sha256='7e289d0aa4a537b4aa798bd609fdf745de0f3c37e6b67642ed328e1482421a6d') + version('1.6.6', sha256='3fbcc144457ba598fb48e0ddce5eacee62610ab11e6fe374b6eef5f7df2a3fbb') # version('1.5.3', sha256='6f65e4ea8290ec032320460905afb828') # has broken unit tests version('1.4.5', sha256='28d8f5b898087ecf86fd66ca0934e5c0e51fc0beb5972cfc4e0c11080e0cb6ab') version('1.4.4', sha256='a521dfdbb728ec36c4cc7a9287285e2c30233fb19faffcec8d080d1b2b2e7d1e') From d7de6cf05582ccb11bc9b8fb276ef8df96b45414 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:02:21 +0100 Subject: [PATCH 059/238] Add extra version of py-arrow (#14966) --- var/spack/repos/builtin/packages/py-arrow/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-arrow/package.py b/var/spack/repos/builtin/packages/py-arrow/package.py index ad2cd6bfce5..7644d9e5fea 100644 --- a/var/spack/repos/builtin/packages/py-arrow/package.py +++ b/var/spack/repos/builtin/packages/py-arrow/package.py @@ -18,6 +18,7 @@ class PyArrow(PythonPackage): url = "https://pypi.io/packages/source/a/arrow/arrow-0.14.7.tar.gz" version('0.14.7', sha256='67f8be7c0cf420424bc62d8d7dc40b44e4bb2f7b515f9cc2954fb36e35797656') + version('0.14.1', sha256='2d30837085011ef0b90ff75aa0a28f5c7d063e96b7e76b6cbc7e690310256685') depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) depends_on('py-setuptools', type='build') From ee573540a0ff45df79d246e819e32a2d0f3c5022 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:03:17 +0100 Subject: [PATCH 060/238] Add extra version of py-asn1crypto (#14967) --- var/spack/repos/builtin/packages/py-asn1crypto/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-asn1crypto/package.py b/var/spack/repos/builtin/packages/py-asn1crypto/package.py index 6f42673ef27..81caf851434 100644 --- a/var/spack/repos/builtin/packages/py-asn1crypto/package.py +++ b/var/spack/repos/builtin/packages/py-asn1crypto/package.py @@ -13,6 +13,7 @@ class PyAsn1crypto(PythonPackage): homepage = "https://github.com/wbond/asn1crypto" url = "https://pypi.io/packages/source/a/asn1crypto/asn1crypto-0.22.0.tar.gz" + version('0.24.0', sha256='9d5c20441baf0cb60a4ac34cc447c6c189024b6b4c6cd7877034f4965c464e49') version('0.22.0', sha256='cbbadd640d3165ab24b06ef25d1dca09a3441611ac15f6a6b452474fdf0aed1a') depends_on('py-setuptools', type='build') From 00de09268e8b420775315c0b657049645fbb5e45 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:04:40 +0100 Subject: [PATCH 061/238] Add extra version of py-absl-py (#14965) --- var/spack/repos/builtin/packages/py-absl-py/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-absl-py/package.py b/var/spack/repos/builtin/packages/py-absl-py/package.py index 4ebb9527bea..5d77a4095e8 100644 --- a/var/spack/repos/builtin/packages/py-absl-py/package.py +++ b/var/spack/repos/builtin/packages/py-absl-py/package.py @@ -17,6 +17,7 @@ class PyAbslPy(PythonPackage): homepage = "https://pypi.org/project/absl-py/" url = "https://pypi.io/packages/source/a/absl-py/absl-py-0.7.0.tar.gz" + version('0.7.1', sha256='b943d1c567743ed0455878fcd60bc28ac9fae38d129d1ccfad58079da00b8951') version('0.7.0', sha256='8718189e4bd6013bf79910b9d1cb0a76aecad8ce664f78e1144980fabdd2cd23') version('0.1.6', sha256='02c577d618a8bc0a2a5d1a51f160d3649745d7a2516d87025322f46ac1391a22') From f547f2ce106597bf3f229ab1577bab3b36e10af0 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:05:09 +0100 Subject: [PATCH 062/238] Add extra version of pixman (#14964) --- var/spack/repos/builtin/packages/pixman/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py index eef9b116cac..31c15b42686 100644 --- a/var/spack/repos/builtin/packages/pixman/package.py +++ b/var/spack/repos/builtin/packages/pixman/package.py @@ -15,6 +15,7 @@ class Pixman(AutotoolsPackage): homepage = "http://www.pixman.org" url = "http://cairographics.org/releases/pixman-0.32.6.tar.gz" + version('0.38.4', sha256='da66d6fd6e40aee70f7bd02e4f8f76fc3f006ec879d346bae6a723025cfbdde7') version('0.38.0', sha256='a7592bef0156d7c27545487a52245669b00cf7e70054505381cff2136d890ca8') version('0.34.0', sha256='21b6b249b51c6800dc9553b65106e1e37d0e25df942c90531d4c3997aa20a88e') version('0.32.6', sha256='3dfed13b8060eadabf0a4945c7045b7793cc7e3e910e748a8bb0f0dc3e794904') From 12ec8e340f5bec16e3d956b78d06459c818e24a8 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:05:30 +0100 Subject: [PATCH 063/238] Add extra version of pcre (#14963) --- var/spack/repos/builtin/packages/pcre/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/pcre/package.py b/var/spack/repos/builtin/packages/pcre/package.py index a488ef3644a..85ba9c52b89 100644 --- a/var/spack/repos/builtin/packages/pcre/package.py +++ b/var/spack/repos/builtin/packages/pcre/package.py @@ -14,6 +14,7 @@ class Pcre(AutotoolsPackage): homepage = "http://www.pcre.org" url = "https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.bz2" + version('8.43', sha256='91e762520003013834ac1adb4a938d53b22a216341c061b0cf05603b290faf6b') version('8.42', sha256='2cd04b7c887808be030254e8d77de11d3fe9d4505c39d4b15d2664ffe8bf9301') version('8.41', sha256='e62c7eac5ae7c0e7286db61ff82912e1c0b7a0c13706616e94a7dd729321b530') version('8.40', sha256='00e27a29ead4267e3de8111fcaa59b132d0533cdfdbdddf4b0604279acbcf4f4') From a6dc3fe40bc2adea74fcf0ee34ed1237ea6291d0 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:05:54 +0100 Subject: [PATCH 064/238] Add extra version of nlohmann-json (#14962) --- var/spack/repos/builtin/packages/nlohmann-json/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/nlohmann-json/package.py b/var/spack/repos/builtin/packages/nlohmann-json/package.py index 80bc0ddf1e4..394dff89bfb 100644 --- a/var/spack/repos/builtin/packages/nlohmann-json/package.py +++ b/var/spack/repos/builtin/packages/nlohmann-json/package.py @@ -15,6 +15,7 @@ class NlohmannJson(CMakePackage): version('3.7.2', sha256='914c4af3f14bb98ff084172685fba5d32e8ce4390ec8ba5da45c63daa305df4d') version('3.7.0', sha256='d51a3a8d3efbb1139d7608e28782ea9efea7e7933157e8ff8184901efd8ee760') + version('3.6.1', sha256='80c45b090e40bf3d7a7f2a6e9f36206d3ff710acfa8d8cc1f8c763bb3075e22e') version('3.5.0', sha256='e0b1fc6cc6ca05706cce99118a87aca5248bd9db3113e703023d23f044995c1d') version('3.4.0', sha256='c377963a95989270c943d522bfefe7b889ef5ed0e1e15d535fd6f6f16ed70732') version('3.3.0', sha256='2fd1d207b4669a7843296c41d3b6ac5b23d00dec48dba507ba051d14564aa801') From 8308d2d59d0c5b40d13b9ff90164fa5c12327626 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:06:17 +0100 Subject: [PATCH 065/238] Add extra version of libxkbcommon (#14961) --- var/spack/repos/builtin/packages/libxkbcommon/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libxkbcommon/package.py b/var/spack/repos/builtin/packages/libxkbcommon/package.py index 657d3b4daeb..71e7a2b6ea8 100644 --- a/var/spack/repos/builtin/packages/libxkbcommon/package.py +++ b/var/spack/repos/builtin/packages/libxkbcommon/package.py @@ -17,6 +17,7 @@ class Libxkbcommon(AutotoolsPackage): version('0.8.2', sha256='7ab8c4b3403d89d01898066b72cb6069bddeb5af94905a65368f671a026ed58c') version('0.8.0', sha256='e829265db04e0aebfb0591b6dc3377b64599558167846c3f5ee5c5e53641fe6d') + version('0.7.1', sha256='ba59305d2e19e47c27ea065c2e0df96ebac6a3c6e97e28ae5620073b6084e68b') depends_on('pkgconfig@0.9.0:', type='build') depends_on('bison', type='build') From bab407a28ab0c2e4fc714d3ac6d4e659636bfae5 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:06:48 +0100 Subject: [PATCH 066/238] Add extra version of libsvm (#14959) --- var/spack/repos/builtin/packages/libsvm/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libsvm/package.py b/var/spack/repos/builtin/packages/libsvm/package.py index bb9a651a713..12b07053bf1 100644 --- a/var/spack/repos/builtin/packages/libsvm/package.py +++ b/var/spack/repos/builtin/packages/libsvm/package.py @@ -13,6 +13,7 @@ class Libsvm(MakefilePackage): homepage = "https://www.csie.ntu.edu.tw/~cjlin/libsvm/" url = "https://github.com/cjlin1/libsvm/archive/v322.tar.gz" + version('323', sha256='7a466f90f327a98f8ed1cb217570547bcb00077933d1619f3cb9e73518f38196') version('322', sha256='a3469436f795bb3f8b1e65ea761e14e5599ec7ee941c001d771c07b7da318ac6') def install(self, spec, prefix): From 8f877fdc6580188131a2034b47c556d757e7b1c5 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:07:12 +0100 Subject: [PATCH 067/238] Add extra version of libsodium (#14958) --- var/spack/repos/builtin/packages/libsodium/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libsodium/package.py b/var/spack/repos/builtin/packages/libsodium/package.py index b14e633ed21..b2f44c0153b 100644 --- a/var/spack/repos/builtin/packages/libsodium/package.py +++ b/var/spack/repos/builtin/packages/libsodium/package.py @@ -13,6 +13,7 @@ class Libsodium(AutotoolsPackage): url = "https://download.libsodium.org/libsodium/releases/libsodium-1.0.13.tar.gz" list_url = "https://download.libsodium.org/libsodium/releases/old" + version('1.0.18', sha256='6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1') version('1.0.17', sha256='0cc3dae33e642cc187b5ceb467e0ad0e1b51dcba577de1190e9ffa17766ac2b1') version('1.0.16', sha256='eeadc7e1e1bcef09680fb4837d448fbdf57224978f865ac1c16745868fbd0533') version('1.0.15', sha256='fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4') From 41a2a5db2cb5ba015e872ee3c49a05dd01584008 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:07:38 +0100 Subject: [PATCH 068/238] Add extra version of libgit2 (#14957) --- var/spack/repos/builtin/packages/libgit2/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libgit2/package.py b/var/spack/repos/builtin/packages/libgit2/package.py index b896675ece6..58ea638de0e 100644 --- a/var/spack/repos/builtin/packages/libgit2/package.py +++ b/var/spack/repos/builtin/packages/libgit2/package.py @@ -16,6 +16,7 @@ class Libgit2(CMakePackage): homepage = "https://libgit2.github.com/" url = "https://github.com/libgit2/libgit2/archive/v0.26.0.tar.gz" + version('0.28.2', sha256='42b5f1e9b9159d66d86fff0394215c5733b6ef8f9b9d054cdd8c73ad47177fc3') version('0.26.0', sha256='6a62393e0ceb37d02fe0d5707713f504e7acac9006ef33da1e88960bd78b6eac') depends_on('cmake@2.8:', type='build') From e75b8c1230e620889b220034eea243230f49d969 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:08:13 +0100 Subject: [PATCH 069/238] Add extra version of json-c (#14956) --- var/spack/repos/builtin/packages/json-c/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/json-c/package.py b/var/spack/repos/builtin/packages/json-c/package.py index 789cde7ed06..3ed27a3c4bd 100644 --- a/var/spack/repos/builtin/packages/json-c/package.py +++ b/var/spack/repos/builtin/packages/json-c/package.py @@ -13,13 +13,14 @@ class JsonC(AutotoolsPackage): version('0.13.1', sha256='b87e608d4d3f7bfdd36ef78d56d53c74e66ab278d318b71e6002a369d36f4873') version('0.12.1', sha256='2a136451a7932d80b7d197b10441e26e39428d67b1443ec43bbba824705e1123') + version('0.12', sha256='000c01b2b3f82dcb4261751eb71f1b084404fb7d6a282f06074d3c17078b9f3f') version('0.11', sha256='28dfc65145dc0d4df1dfe7701ac173c4e5f9347176c8983edbfac9149494448c') depends_on('autoconf', type='build') parallel = False - @when('@0.12.1 %gcc@7:') + @when('@0.12:0.12.1 %gcc@7:') def patch(self): filter_file('-Wextra', '-Wextra -Wno-error=implicit-fallthrough ' From 7d96e496b203b01a5574f2c00e8313677807caa8 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:08:37 +0100 Subject: [PATCH 070/238] Add extra version of jemalloc (#14955) --- var/spack/repos/builtin/packages/jemalloc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/jemalloc/package.py b/var/spack/repos/builtin/packages/jemalloc/package.py index f87be56e696..d0a680547c8 100644 --- a/var/spack/repos/builtin/packages/jemalloc/package.py +++ b/var/spack/repos/builtin/packages/jemalloc/package.py @@ -13,6 +13,7 @@ class Jemalloc(Package): url = "https://github.com/jemalloc/jemalloc/releases/download/4.0.4/jemalloc-4.0.4.tar.bz2" version('5.2.1', sha256='34330e5ce276099e2e8950d9335db5a875689a4c6a56751ef3b1d8c537f887f6') + version('5.2.0', sha256='74be9f44a60d2a99398e706baa921e4efde82bf8fd16e5c0643c375c5851e3b4') version('4.5.0', sha256='9409d85664b4f135b77518b0b118c549009dc10f6cba14557d170476611f6780') version('4.4.0', sha256='a7aea63e9718d2f1adf81d87e3df3cb1b58deb86fc77bad5d702c4c59687b033') version('4.3.1', sha256='f7bb183ad8056941791e0f075b802e8ff10bd6e2d904e682f87c8f6a510c278b') From 7f9cd886f37f07ab834ae587284c6cadaa331f9c Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:09:06 +0100 Subject: [PATCH 071/238] Add extra version of imagemagick (#14954) --- var/spack/repos/builtin/packages/imagemagick/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/imagemagick/package.py b/var/spack/repos/builtin/packages/imagemagick/package.py index 363c0c5faea..bf133809280 100644 --- a/var/spack/repos/builtin/packages/imagemagick/package.py +++ b/var/spack/repos/builtin/packages/imagemagick/package.py @@ -13,6 +13,7 @@ class Imagemagick(AutotoolsPackage): homepage = "http://www.imagemagick.org" url = "https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz" + version('7.0.8-7', sha256='fadb36b59f310e9eee5249ecb2326b323a64da6cc716dd6d08ece8ea2c780b81') version('7.0.5-9', sha256='b85b269e0ed1628e88e840053823f8a33c314b2271f04762f43d33e9d0b4d264') version('7.0.2-7', sha256='f2f18a97f861c1668befdaff0cc3aaafb2111847aab028a88b4c2cb017acfbaa') version('7.0.2-6', sha256='7d49ca8030f895c683cae69c52d8edfc4876de651f5b8bfdbea907e222480bd3') From df1e9317b84f802033d9611abe123e23659ef220 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:09:36 +0100 Subject: [PATCH 072/238] Add extra version of highfive (#14953) * Add extra version of HepMC * Add extra version of highfive * Undo changes to hepmc --- var/spack/repos/builtin/packages/highfive/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/highfive/package.py b/var/spack/repos/builtin/packages/highfive/package.py index aed6d1e51ea..ed43ea26e37 100644 --- a/var/spack/repos/builtin/packages/highfive/package.py +++ b/var/spack/repos/builtin/packages/highfive/package.py @@ -13,6 +13,7 @@ class Highfive(CMakePackage): homepage = "https://github.com/BlueBrain/HighFive" url = "https://github.com/BlueBrain/HighFive/archive/v1.2.tar.gz" + version('2.0', sha256='deee33d7f578e33dccb5d04771f4e01b89a980dd9a3ff449dd79156901ee8d25') version('1.5', sha256='f194bda482ab15efa7c577ecc4fb7ee519f6d4bf83470acdb3fb455c8accb407') version('1.2', sha256='4d8f84ee1002e8fd6269b62c21d6232aea3d56ce4171609e39eb0171589aab31') version('1.1', sha256='430fc312fc1961605ffadbfad82b9753a5e59482e9fbc64425fb2c184123d395') From 978d960158e9aa9052e75d1a6dd21fda19ee440a Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:09:58 +0100 Subject: [PATCH 073/238] Add extra version of HepMC (#14952) --- var/spack/repos/builtin/packages/hepmc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/hepmc/package.py b/var/spack/repos/builtin/packages/hepmc/package.py index 80412be740c..74f11418426 100644 --- a/var/spack/repos/builtin/packages/hepmc/package.py +++ b/var/spack/repos/builtin/packages/hepmc/package.py @@ -19,6 +19,7 @@ class Hepmc(CMakePackage): version('3.1.1', sha256='2fcbc9964d6f9f7776289d65f9c73033f85c15bf5f0df00c429a6a1d8b8248bb') version('3.1.0', sha256='cd37eed619d58369041018b8627274ad790020a4714b54ac05ad1ebc1a6e7f8a') version('3.0.0', sha256='7ac3c939a857a5ad67bea1e77e3eb16e80d38cfdf825252ac57160634c26d9ec') + version('2.06.10', sha256='5adedd9e3f7447e1e5fc01b72f745ab87da2c1611df89208bb3d7c6ea94c11a4') version('2.06.09', sha256='e0f8fddd38472c5615210894444686ac5d72df3be682f7d151b562b236d9b422') version('2.06.08', sha256='8be6c1793e0a045f07ddb88bb64b46de7e66a52e75fb72b3f82f9a3e3ba8a8ce') version('2.06.07', sha256='a0bdd6f36a3cc4cb59d6eb15cef9d46ce9b3739cae3324e81ebb2df6943e4594') From 1b95c33c820944dc24dc2a16f20c8a154cf28df8 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:10:21 +0100 Subject: [PATCH 074/238] Add extra version of gperf (#14951) --- var/spack/repos/builtin/packages/gperf/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gperf/package.py b/var/spack/repos/builtin/packages/gperf/package.py index 9d58b8fe333..96d15d1f2ef 100644 --- a/var/spack/repos/builtin/packages/gperf/package.py +++ b/var/spack/repos/builtin/packages/gperf/package.py @@ -17,6 +17,7 @@ class Gperf(AutotoolsPackage, GNUMirrorPackage): homepage = "https://www.gnu.org/software/gperf/" gnu_mirror_path = "gperf/gperf-3.0.4.tar.gz" + version('3.1', sha256='588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2') version('3.0.4', sha256='767112a204407e62dbc3106647cf839ed544f3cf5d0f0523aaa2508623aad63e') # NOTE: `make check` is known to fail tests From e833ef9cce07e148130305667a91fc06dba2c22c Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:10:42 +0100 Subject: [PATCH 075/238] Add extra version of freetype (#14950) --- var/spack/repos/builtin/packages/freetype/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/freetype/package.py b/var/spack/repos/builtin/packages/freetype/package.py index a4662cfa9c8..898fc259c08 100644 --- a/var/spack/repos/builtin/packages/freetype/package.py +++ b/var/spack/repos/builtin/packages/freetype/package.py @@ -16,6 +16,7 @@ class Freetype(AutotoolsPackage): url = "https://download.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.gz" version('2.10.1', sha256='3a60d391fd579440561bf0e7f31af2222bc610ad6ce4d9d7bd2165bca8669110') + version('2.10.0', sha256='955e17244e9b38adb0c98df66abb50467312e6bb70eac07e49ce6bd1a20e809a') version('2.9.1', sha256='ec391504e55498adceb30baceebd147a6e963f636eb617424bcfc47a169898ce') version('2.7.1', sha256='162ef25aa64480b1189cdb261228e6c5c44f212aac4b4621e28cf2157efb59f5') version('2.7', sha256='7b657d5f872b0ab56461f3bd310bd1c5ec64619bd15f0d8e08282d494d9cfea4') From 8624bf65f91e29ded5eec33daf91360d619570ce Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:11:10 +0100 Subject: [PATCH 076/238] Add new version of fontconfig (#14949) --- var/spack/repos/builtin/packages/fontconfig/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py index d6fd7f9085b..41324399d64 100644 --- a/var/spack/repos/builtin/packages/fontconfig/package.py +++ b/var/spack/repos/builtin/packages/fontconfig/package.py @@ -11,6 +11,7 @@ class Fontconfig(AutotoolsPackage): homepage = "http://www.freedesktop.org/wiki/Software/fontconfig/" url = "http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.12.3.tar.gz" + version('2.13.1', sha256='9f0d852b39d75fc655f9f53850eb32555394f36104a044bb2b2fc9e66dbbfa7f') version('2.12.3', sha256='ffc3cbf6dd9fcd516ee42f48306a715e66698b238933d6fa7cef02ea8b3b818e') version('2.12.1', sha256='a9f42d03949f948a3a4f762287dbc16e53a927c91a07ee64207ebd90a9e5e292') version('2.11.1', sha256='b6b066c7dce3f436fdc0dfbae9d36122b38094f4f53bd8dffd45e195b0540d8d') @@ -20,6 +21,7 @@ class Fontconfig(AutotoolsPackage): depends_on('libxml2') depends_on('pkgconfig', type='build') depends_on('font-util') + depends_on('libuuid', when='@2.13.1:') def configure_args(self): font_path = join_path(self.spec['font-util'].prefix, 'share', 'fonts') From fc190f397aaa8162e00f59c5ef5563ac8f9980d2 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:11:33 +0100 Subject: [PATCH 077/238] Add new version of expat (#14948) --- var/spack/repos/builtin/packages/expat/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index 7eb816923ff..f8067980a61 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -14,6 +14,7 @@ class Expat(AutotoolsPackage): url = "https://github.com/libexpat/libexpat/releases/download/R_2_2_9/expat-2.2.9.tar.bz2" version('2.2.9', sha256='f1063084dc4302a427dabcca499c8312b3a32a29b7d2506653ecc8f950a9a237') + version('2.2.6', sha256='17b43c2716d521369f82fc2dc70f359860e90fa440bea65b3b85f0b246ea81f2') version('2.2.5', sha256='d9dc32efba7e74f788fcc4f212a43216fc37cf5f23f4c2339664d473353aedf6') version('2.2.2', sha256='4376911fcf81a23ebd821bbabc26fd933f3ac74833f74924342c29aad2c86046') version('2.2.0', sha256='d9e50ff2d19b3538bd2127902a89987474e1a4db8e43a66a4d1a712ab9a504ff') From 0dbd3b21c8e469c2743c57974d27fad9cfebf010 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:14:01 +0100 Subject: [PATCH 078/238] Add new version of elasticsearch (#14945) --- var/spack/repos/builtin/packages/elasticsearch/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/elasticsearch/package.py b/var/spack/repos/builtin/packages/elasticsearch/package.py index 6879cdd5df0..23d4146de5b 100644 --- a/var/spack/repos/builtin/packages/elasticsearch/package.py +++ b/var/spack/repos/builtin/packages/elasticsearch/package.py @@ -16,6 +16,7 @@ class Elasticsearch(Package): url = "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz" version('6.4.0', sha256='e9786efb5cecd12adee2807c7640ba9a1ab3b484d2e87497bb8d0b6df0e24f01') + version('6.3.0', sha256='0464127140820d82b24bd2830232131ea85bcd49267a8bc7365e4fa391dee2a3') version('6.2.4', sha256='91e6f1ea1e1dd39011e7a703d2751ca46ee374665b08b0bfe17e0c0c27000e8e') depends_on('jdk', type='run') From d3db3c6a2b6655c88593782899341fa499e5e42c Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:15:59 +0100 Subject: [PATCH 079/238] Add new version of clhep (#14943) --- var/spack/repos/builtin/packages/clhep/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py index 5f1294e480f..0477703d836 100644 --- a/var/spack/repos/builtin/packages/clhep/package.py +++ b/var/spack/repos/builtin/packages/clhep/package.py @@ -14,6 +14,7 @@ class Clhep(CMakePackage): list_url = "https://proj-clhep.web.cern.ch/proj-clhep/" list_depth = 1 + version('2.4.1.2', sha256='ff96e7282254164380460bc8cf2dff2b58944084eadcd872b5661eb5a33fa4b8') version('2.4.1.0', sha256='d14736eb5c3d21f86ce831dc1afcf03d423825b35c84deb6f8fd16773528c54d') version('2.4.0.4', sha256='eb013841c57990befa1e977a11a552ab8328733c1c3b6cecfde86da40dc22113') version('2.4.0.2', sha256='1e9891c5badb718c24933e7a5c6ee4d64fd4d5cf3a40c150ad18e864ec86b8a4') From b261b80ebd459c907e1b5bcd111c0adfe489d302 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 16 Feb 2020 06:18:20 +0100 Subject: [PATCH 080/238] Add new version of bison (#14940) --- var/spack/repos/builtin/packages/bison/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index 7738b38a8ff..a0b04062408 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -17,6 +17,7 @@ class Bison(AutotoolsPackage, GNUMirrorPackage): gnu_mirror_path = "bison/bison-3.4.2.tar.gz" version('3.4.2', sha256='ff3922af377d514eca302a6662d470e857bd1a591e96a2050500df5a9d59facf') + version('3.4.1', sha256='7007fc89c216fbfaff5525359b02a7e5b612694df5168c74673f67055f015095') version('3.0.5', sha256='cd399d2bee33afa712bac4b1f4434e20379e9b4099bce47189e09a7675a2d566') version('3.0.4', sha256='b67fd2daae7a64b5ba862c66c07c1addb9e6b1b05c5f2049392cfd8a2172952e') version('2.7', sha256='19bbe7374fd602f7a6654c131c21a15aebdc06cc89493e8ff250cb7f9ed0a831') From b9156895ec77c4f4858bcb84cbdfe731ceaef602 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Sun, 16 Feb 2020 09:30:30 -0500 Subject: [PATCH 081/238] Remove unneeded dependency on gzip for libmng (#14992) Libmng only needs gzip to compress man files for distribution, so it builds fine without it. The spack gzip currently fails to compile. ``` config.status: linking /var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/spack-stage/s3j/spack-stage-gzip-1.10-iatwtuk2l5xgwmuh4pwu5bf27yezpydj/spack-src/GNUmakefile to GNUmakefile config.status: executing depfiles commands ==> Executing phase: 'build' ==> [2020-02-14-09:32:45.502913] 'make' '-j12' make: GNUmakefile: Too many levels of symbolic links make: stat: GNUmakefile: Too many levels of symbolic links make: *** No rule to make target `GNUmakefile'. Stop. ``` --- var/spack/repos/builtin/packages/libmng/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libmng/package.py b/var/spack/repos/builtin/packages/libmng/package.py index 29d70379bcc..fd11340a634 100644 --- a/var/spack/repos/builtin/packages/libmng/package.py +++ b/var/spack/repos/builtin/packages/libmng/package.py @@ -16,7 +16,6 @@ class Libmng(CMakePackage): version('2.0.3', sha256='cf112a1fb02f5b1c0fce5cab11ea8243852c139e669c44014125874b14b7dfaa') version('2.0.2', sha256='4908797bb3541fb5cd8fffbe0b1513ed163509f2a4d57a78b26a96f8d1dd05a2') - depends_on("gzip") depends_on("jpeg") depends_on("zlib") depends_on("lcms") From 8071369ffe693696320f9f70894ead35adae06f8 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Sun, 16 Feb 2020 09:31:11 -0500 Subject: [PATCH 082/238] Use separate build directory for gzip (#14994) * Use separate build directory for gzip At least on mac systems (perhaps because of a case sensitivity issue?) gzip fails to build inside the source tree: ``` config.status: linking /var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/spack-stage/s3j/spack-stage-gzip-1.10-iatwtuk2l5xgwmuh4pwu5bf27yezpydj/spack-src/GNUmakefile to GNUmakefile config.status: executing depfiles commands ==> Executing phase: 'build' ==> [2020-02-14-09:32:45.502913] 'make' '-j12' make: GNUmakefile: Too many levels of symbolic links make: stat: GNUmakefile: Too many levels of symbolic links make: *** No rule to make target `GNUmakefile'. Stop. ``` * Simplify build directory and add gmake dependency --- var/spack/repos/builtin/packages/gzip/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/gzip/package.py b/var/spack/repos/builtin/packages/gzip/package.py index 7a99424c3b5..81295fab7a9 100644 --- a/var/spack/repos/builtin/packages/gzip/package.py +++ b/var/spack/repos/builtin/packages/gzip/package.py @@ -13,3 +13,8 @@ class Gzip(AutotoolsPackage): url = "https://ftp.gnu.org/gnu/gzip/gzip-1.10.tar.gz" version('1.10', sha256='c91f74430bf7bc20402e1f657d0b252cb80aa66ba333a25704512af346633c68') + + depends_on('gmake', type='build') + + # Gzip makes a recursive symlink if built in-source + build_directory = 'spack-build' From 60847abf0e9ec2939ff13950e9d6c00b6b73e17e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 16 Feb 2020 08:31:30 -0600 Subject: [PATCH 083/238] gdb: fix installation (#15016) --- var/spack/repos/builtin/packages/gdb/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index e90f28d662b..825291feb09 100644 --- a/var/spack/repos/builtin/packages/gdb/package.py +++ b/var/spack/repos/builtin/packages/gdb/package.py @@ -41,6 +41,8 @@ class Gdb(AutotoolsPackage, GNUMirrorPackage): depends_on('python', when='+python') depends_on('xz', when='+xz') + build_directory = 'spack-build' + def configure_args(self): args = [] if '+python' in self.spec: From 1cc7a3533bc31b09ca5a626cb38d3c8dd9b6997d Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Sun, 16 Feb 2020 22:30:32 +0100 Subject: [PATCH 084/238] Fix header-only installation of Boost. (#14995) --- .../repos/builtin/packages/boost/package.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 884aaa40b6a..452ae99b8ab 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -405,15 +405,6 @@ def install(self, spec, prefix): for lib in Boost.all_libs: if "+{0}".format(lib) in spec: with_libs.append(lib) - if not with_libs: - # if no libraries are specified for compilation, then you dont have - # to configure/build anything, just copy over to the prefix - # directory. - src = join_path(self.stage.source_path, 'boost') - mkdirp(join_path(prefix, 'include')) - dst = join_path(prefix, 'include', 'boost') - install_tree(src, dst) - return # Remove libraries that the release version does not support if spec.satisfies('@1.69.0:') and 'signals' in with_libs: @@ -433,6 +424,16 @@ def install(self, spec, prefix): if '+graph' in spec and '+mpi' in spec: with_libs.append('graph_parallel') + if not with_libs: + # if no libraries are specified for compilation, then you dont have + # to configure/build anything, just copy over to the prefix + # directory. + src = join_path(self.stage.source_path, 'boost') + mkdirp(join_path(prefix, 'include')) + dst = join_path(prefix, 'include', 'boost') + install_tree(src, dst) + return + # to make Boost find the user-config.jam env['BOOST_BUILD_PATH'] = self.stage.source_path From bbd256e2fe9631101295772ad0c60a0cdd353ce5 Mon Sep 17 00:00:00 2001 From: Carson Woods Date: Sun, 16 Feb 2020 22:17:07 -0500 Subject: [PATCH 085/238] package: Add newer version of PowerAPI package (#15005) * Add newer commit of PowerAPI package * Update naming scheme to be easier to read --- var/spack/repos/builtin/packages/powerapi/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/powerapi/package.py b/var/spack/repos/builtin/packages/powerapi/package.py index ccb8ffe780f..4b4fb5e3a0d 100644 --- a/var/spack/repos/builtin/packages/powerapi/package.py +++ b/var/spack/repos/builtin/packages/powerapi/package.py @@ -11,6 +11,7 @@ class Powerapi(AutotoolsPackage): homepage = "https://powerapi.sandia.gov/" git = "https://github.com/pwrapi/pwrapi-ref.git" + version('2020-01-30', commit='21f75b1469261d99e604f7ddc18f30513ebdd048') version('1.1.1', commit='93f66dfa29f014067823f2b790a1862e5841a11c') variant('hwloc', default=False, description='Build hwloc support') From b8c214176009754e30cb56247e14990589be8cfa Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Mon, 17 Feb 2020 11:43:25 +0100 Subject: [PATCH 086/238] go: added v1.13.8 and v1.12.17 (#15022) --- var/spack/repos/builtin/packages/go/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index f2d0e94f877..75d183148fb 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -35,6 +35,7 @@ class Go(Package): extendable = True + version('1.13.8', sha256='b13bf04633d4d8cf53226ebeaace8d4d2fd07ae6fa676d0844a688339debec34') version('1.13.7', sha256='e4ad42cc5f5c19521fbbbde3680995f2546110b5c6aa2b48c3754ff7af9b41f4') version('1.13.6', sha256='aae5be954bdc40bcf8006eb77e8d8a5dde412722bc8effcdaf9772620d06420c') version('1.13.5', sha256='27d356e2a0b30d9983b60a788cf225da5f914066b37a6b4f69d457ba55a626ff') @@ -43,6 +44,7 @@ class Go(Package): version('1.13.2', sha256='1ea68e01472e4276526902b8817abd65cf84ed921977266f0c11968d5e915f44') version('1.13.1', sha256='81f154e69544b9fa92b1475ff5f11e64270260d46e7e36c34aafc8bc96209358') version('1.13', sha256='3fc0b8b6101d42efd7da1da3029c0a13f22079c0c37ef9730209d8ec665bf122') + version('1.12.17', sha256='de878218c43aa3c3bad54c1c52d95e3b0e5d336e1285c647383e775541a28b25') version('1.12.15', sha256='8aba74417e527524ad5724e6e6c21016795d1017692db76d1b0851c6bdec84c3') version('1.12.14', sha256='39dbf05f7e2ffcb19b08f07d53dcc96feadeb1987fef9e279e7ff0c598213064') version('1.12.13', sha256='5383d3b8db4baa48284ffcb14606d9cad6f03e9db843fa6d835b94d63cccf5a7') From 38c3b55f199dd5bfa0595806cc90647cb18ef51b Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Mon, 17 Feb 2020 10:05:32 -0800 Subject: [PATCH 087/238] libnrm needs pkg-config for build (#15007) --- var/spack/repos/builtin/packages/libnrm/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libnrm/package.py b/var/spack/repos/builtin/packages/libnrm/package.py index ea4d151f7e8..27c3c8e34ec 100644 --- a/var/spack/repos/builtin/packages/libnrm/package.py +++ b/var/spack/repos/builtin/packages/libnrm/package.py @@ -18,6 +18,7 @@ class Libnrm(AutotoolsPackage): depends_on('autoconf', type='build') depends_on('automake', type='build') depends_on('libtool', type='build') + depends_on('pkgconfig', type='build') depends_on('libzmq') depends_on('mpich') From d6e4b4773a3ac92532156ab80f187e3542460a28 Mon Sep 17 00:00:00 2001 From: iarspider Date: Mon, 17 Feb 2020 19:24:59 +0100 Subject: [PATCH 088/238] Add extra version + variants of py-lxml (#14999) * Add extra version of py-lxml * Extra variants for py-lxml * Update var/spack/repos/builtin/packages/py-lxml/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-lxml/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-lxml/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-lxml/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/py-lxml/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-lxml/package.py b/var/spack/repos/builtin/packages/py-lxml/package.py index cdb82cafef6..65e19d72972 100644 --- a/var/spack/repos/builtin/packages/py-lxml/package.py +++ b/var/spack/repos/builtin/packages/py-lxml/package.py @@ -14,11 +14,19 @@ class PyLxml(PythonPackage): url = "https://pypi.io/packages/source/l/lxml/lxml-4.4.1.tar.gz" version('4.4.1', sha256='c81cb40bff373ab7a7446d6bbca0190bccc5be3448b47b51d729e37799bb5692') + version('4.3.3', sha256='4a03dd682f8e35a10234904e0b9508d705ff98cf962c5851ed052e9340df3d90') version('4.2.5', sha256='36720698c29e7a9626a0dc802ef8885f8f0239bfd1689628ecd459a061f2807f') version('3.7.3', sha256='aa502d78a51ee7d127b4824ff96500f0181d3c7826e6ee7b800d068be79361c7') version('2.3', sha256='eea1b8d29532739c1383cb4794c5eacd6176f0972b59e8d29348335b87ff2e66') + variant('html5', default=False, description='Enable html5lib backend') + variant('htmlsoup', default=False, description='Enable BeautifulSoup4 backend') + variant('cssselect', default=False, description='Enable cssselect module') + depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) depends_on('py-setuptools', type='build') depends_on('libxml2', type=('build', 'run')) depends_on('libxslt', type=('build', 'run')) + depends_on('py-html5lib', when='+html5', type=('build', 'run')) + depends_on('py-beautifulsoup4', when='+htmlsoup', type=('build', 'run')) + depends_on('py-cssselect@0.7:', when='+cssselect', type=('build', 'run')) From 03d32c868a6cd8f7160d211edf057cb7b2e53fab Mon Sep 17 00:00:00 2001 From: "Dr. Christian Tacke" <58549698+ChristianTackeGSI@users.noreply.github.com> Date: Mon, 17 Feb 2020 19:26:35 +0100 Subject: [PATCH 089/238] cmake: Fix spack install inside ctest (#14889) Disable the CMake install tests since they break under certain testing conditions. --- var/spack/repos/builtin/packages/cmake/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 4f6e30874b4..fdfa46af426 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -175,6 +175,10 @@ def bootstrap_args(self): # Make sure to create an optimized release build args.append('-DCMAKE_BUILD_TYPE=Release') + # Install CMake correctly, even if `spack install` runs + # inside a ctest environment + args.append('-DCMake_TEST_INSTALL=OFF') + # When building our own private copy of curl then we need to properly # enable / disable oepnssl if '+ownlibs' in spec: From 33edadb041b5d3cb2ea77f1398b6b1edbcd5fb91 Mon Sep 17 00:00:00 2001 From: iarspider Date: Mon, 17 Feb 2020 19:35:04 +0100 Subject: [PATCH 090/238] Add extra version of py-iminuit (#14982) * Add extra version of py-iminuit * Update package.py --- var/spack/repos/builtin/packages/py-iminuit/package.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-iminuit/package.py b/var/spack/repos/builtin/packages/py-iminuit/package.py index f9531d640b7..e9ec1b73bf3 100644 --- a/var/spack/repos/builtin/packages/py-iminuit/package.py +++ b/var/spack/repos/builtin/packages/py-iminuit/package.py @@ -12,12 +12,15 @@ class PyIminuit(PythonPackage): homepage = "https://pypi.python.org/pypi/iminuit" url = "https://pypi.io/packages/source/i/iminuit/iminuit-1.2.tar.gz" + version('1.3.6', sha256='d79a197f305d4708a0e3e52b0a6748c1a6997360d2fbdfd09c022995a6963b5e') version('1.2', sha256='7651105fc3f186cfb5742f075ffebcc5088bf7797d8ed124c00977eebe0d1c64') # Required dependencies depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run'), when='@1.3:') # Optional dependencies - depends_on('py-numpy', type=('build', 'run')) - depends_on('py-matplotlib', type=('build', 'run')) - depends_on('py-cython', type='build') + depends_on('py-matplotlib', type='test', when='@1.3:') + depends_on('py-cython', type='test', when='@1.3:') + depends_on('py-pytest', type='test', when='@1.3:') + depends_on('py-scipy', type='test', when='@1.3:') From e781d8eb7207e2d3e94ea90f60fb87c7819bc7c0 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 00:02:17 +0100 Subject: [PATCH 091/238] Add extra version of py-matplotlib; fix dependency on six (#15000) * Add extra version of py-matplotlib * Update dependency * Update package.py * Update var/spack/repos/builtin/packages/py-matplotlib/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-matplotlib/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/py-matplotlib/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 6ef54f981d3..eb4f5e3da54 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -34,6 +34,7 @@ class PyMatplotlib(PythonPackage): version('3.0.2', sha256='c94b792af431f6adb6859eb218137acd9a35f4f7442cea57e4a59c54751c36af') version('3.0.0', sha256='b4e2333c98a7c2c1ff6eb930cd2b57d4b818de5437c5048802096b32f66e65f9') version('2.2.5', sha256='a3037a840cd9dfdc2df9fee8af8f76ca82bfab173c0f9468193ca7a89a2b60ea') + version('2.2.4', sha256='029620799e581802961ac1dcff5cb5d3ee2f602e0db9c0f202a90495b37d2126') version('2.2.3', sha256='7355bf757ecacd5f0ac9dd9523c8e1a1103faadf8d33c22664178e17533f8ce5') version('2.2.2', sha256='4dc7ef528aad21f22be85e95725234c5178c0f938e2228ca76640e5e84d8cde8') version('2.0.2', sha256='0ffbc44faa34a8b1704bc108c451ecf87988f900ef7ce757b8e2e84383121ff1') @@ -82,14 +83,15 @@ class PyMatplotlib(PythonPackage): 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')) - depends_on('py-kiwisolver@1:', type=('build', 'run'), when='@2.2.0:') + depends_on('py-kiwisolver@1.0.1:', type=('build', 'run'), when='@2.2.0:') depends_on('py-pyparsing', 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-backports-functools-lru-cache', type=('build', 'run'), when='@2.1.0:2.999.999 ^python@:2') - depends_on('py-six@1.9.0:', type=('build', 'run'), when='@:2') + depends_on('py-six@1.10.0:', type=('build', 'run'), when='@2.0:2.999') + depends_on('py-six@1.9.0:', type=('build', 'run'), when='@:1') # Optional backend dependencies depends_on('tk@8.3:8.5,8.6.2:', when='backend=tkagg', type='run') From 30d487509b1a106b43bfe4faf02ddd3355466ab1 Mon Sep 17 00:00:00 2001 From: wspear Date: Mon, 17 Feb 2020 15:19:48 -0800 Subject: [PATCH 092/238] =?UTF-8?q?Added=20new=20default=20tau=20version:?= =?UTF-8?q?=202.29.=20Added=20explicit=20zlib=20build=20requir=E2=80=A6=20?= =?UTF-8?q?(#15010)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added new default tau version: 2.29. Added explicit zlib build requirement. Set up environment to use use elf and libz * Changed zlib to link dependency. Removed elf library path load (wasn't able to reproduce the need for this) --- var/spack/repos/builtin/packages/tau/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index 2aadb64590c..c5ac0a43e8b 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -23,6 +23,7 @@ class Tau(Package): git = "https://github.com/UO-OACISS/tau2" version('develop', branch='master') + version('2.29', sha256='146be769a23c869a7935e8fa5ba79f40ba36b9057a96dda3be6730fc9ca86086') version('2.28.2', sha256='64e129a482056755012b91dae2fb4f728dbf3adbab53d49187eca952891c5457') version('2.28.1', sha256='b262e5c9977471e9f5a8d729b3db743012df9b0ab8244da2842039f8a3b98b34') version('2.28', sha256='68c6f13ae748d12c921456e494006796ca2b0efebdeef76ee7c898c81592883e') @@ -75,6 +76,7 @@ class Tau(Package): 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') + depends_on('zlib', type='link') depends_on('pdt', when='+pdt') # Required for TAU instrumentation depends_on('scorep', when='+scorep') depends_on('otf2@2.1:', when='+otf2') @@ -131,6 +133,9 @@ def set_compiler_options(self, spec): compiler_options.append(useropt) return compiler_options + def setup_build_environment(self, env): + env.prepend_path('LIBRARY_PATH', self.spec['zlib'].prefix.lib) + def install(self, spec, prefix): # TAU isn't happy with directories that have '@' in the path. Sigh. change_sed_delimiter('@', ';', 'configure') From ccbdd3c902c3be62739bb72d7a15d9a3d4ad73b4 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 00:20:50 +0100 Subject: [PATCH 093/238] Add new version of libunwind (#14947) * Add new version of libunwind * Update package.py --- var/spack/repos/builtin/packages/libunwind/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py index 727cac44bb2..b8e01f0a92d 100644 --- a/var/spack/repos/builtin/packages/libunwind/package.py +++ b/var/spack/repos/builtin/packages/libunwind/package.py @@ -16,8 +16,9 @@ class Libunwind(AutotoolsPackage): version('develop', branch='master') version('2018.10.12', commit='f551e16213c52169af8bda554e4051b756a169cc') - version('1.3-rc1', sha256='e40f49dcbfdea3f4d15fa555fe68958e69a3f410aacf1ec46fd86aeced699773') - version('1.2.1', sha256='3f3ecb90e28cbe53fba7a4a27ccce7aad188d3210bb1964a923a731a27a75acb', preferred=True) + version('1.4-rc1', sha256='1928459139f048f9b4aca4bb5010540cb7718d44220835a2980b85429007fa9f') + version('1.3.1', sha256='43997a3939b6ccdf2f669b50fdb8a4d3205374728c2923ddc2354c65260214f8', preferred=True) + version('1.2.1', sha256='3f3ecb90e28cbe53fba7a4a27ccce7aad188d3210bb1964a923a731a27a75acb') version('1.1', sha256='9dfe0fcae2a866de9d3942c66995e4b460230446887dbdab302d41a8aee8d09a') variant('xz', default=False, From 921cb6c860741574a0be8dd37542b5c306934d78 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Mon, 17 Feb 2020 18:21:31 -0500 Subject: [PATCH 094/238] Qt4 patches (#15025) * Fix patch applicability * Combine patches for missing qt3 headers and remove krell variant The variant should have always been applied. * Restrict QT patches to actual applicable versions/situations - I researched the associated patches so now their `when=` should more closely match when they're actually needed. - I sorted the patch order so they're grouped by version requirement - I renamed the patches so they're listed by version requirements --- .../builtin/packages/openspeedshop/package.py | 2 +- .../repos/builtin/packages/qt/package.py | 79 ++++++++----------- .../qt/{qt3accept.patch => qt3-accept.patch} | 0 .../{qt3ptrdiff.patch => qt3-headers.patch} | 10 +++ .../repos/builtin/packages/qt/qt3krell.patch | 10 --- ...t-487.patch => qt4-87-configure-gcc.patch} | 0 ...atile-fix.patch => qt4-asm-volatile.patch} | 0 ...d-webkit.patch => qt4-configure-gcc.patch} | 0 ...-include-conflict.patch => qt4-pcre.patch} | 0 ...gcc9-qforeach.patch => qt4-qforeach.patch} | 0 ...flow.patch => qt5-11-intel-overflow.patch} | 0 ...flow.patch => qt5-12-intel-overflow.patch} | 0 ...TBUG-57656.patch => qt5-8-framework.patch} | 0 ...QTBUG-58038.patch => qt5-8-freetype.patch} | 0 ...atile-fix.patch => qt5-asm-volatile.patch} | 0 ...appy.patch => qt5-btn_trigger_happy.patch} | 0 ...files.patch => qt5-restore-pc-files.patch} | 0 17 files changed, 43 insertions(+), 58 deletions(-) rename var/spack/repos/builtin/packages/qt/{qt3accept.patch => qt3-accept.patch} (100%) rename var/spack/repos/builtin/packages/qt/{qt3ptrdiff.patch => qt3-headers.patch} (65%) delete mode 100644 var/spack/repos/builtin/packages/qt/qt3krell.patch rename var/spack/repos/builtin/packages/qt/{qt4-gcc-and-webkit-487.patch => qt4-87-configure-gcc.patch} (100%) rename var/spack/repos/builtin/packages/qt/{qt4-gcc8.3-asm-volatile-fix.patch => qt4-asm-volatile.patch} (100%) rename var/spack/repos/builtin/packages/qt/{qt4-gcc-and-webkit.patch => qt4-configure-gcc.patch} (100%) rename var/spack/repos/builtin/packages/qt/{qt4-pcre-include-conflict.patch => qt4-pcre.patch} (100%) rename var/spack/repos/builtin/packages/qt/{qt4-gcc9-qforeach.patch => qt4-qforeach.patch} (100%) rename var/spack/repos/builtin/packages/qt/{qt5_11-intel-overflow.patch => qt5-11-intel-overflow.patch} (100%) rename var/spack/repos/builtin/packages/qt/{qt5_12-intel-overflow.patch => qt5-12-intel-overflow.patch} (100%) rename var/spack/repos/builtin/packages/qt/{QTBUG-57656.patch => qt5-8-framework.patch} (100%) rename var/spack/repos/builtin/packages/qt/{QTBUG-58038.patch => qt5-8-freetype.patch} (100%) rename var/spack/repos/builtin/packages/qt/{qt5-gcc8.3-asm-volatile-fix.patch => qt5-asm-volatile.patch} (100%) rename var/spack/repos/builtin/packages/qt/{btn_trigger_happy.patch => qt5-btn_trigger_happy.patch} (100%) rename var/spack/repos/builtin/packages/qt/{restore-pc-files.patch => qt5-restore-pc-files.patch} (100%) diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 88ac7e35470..56f9b0c6891 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -96,7 +96,7 @@ class Openspeedshop(CMakePackage): depends_on("libxml2") - depends_on("qt@3.3.8b+krellpatch", when='gui=qt3') + depends_on("qt@3", when='gui=qt3') # Dependencies for the openspeedshop cbtf packages. depends_on("cbtf@develop", when='@develop', type=('build', 'link', 'run')) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 3753f4166c4..4e6af88bb70 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -47,10 +47,6 @@ class Qt(Package): version('4.8.5', sha256='eb728f8268831dc4373be6403b7dd5d5dde03c169ad6882f9a8cb560df6aa138') version('3.3.8b', sha256='1b7a1ff62ec5a9cb7a388e2ba28fda6f960b27f27999482ebeceeadb72ac9f6e') - # Add patch for compile issues with qt3 found with use in the - # OpenSpeedShop project - variant('krellpatch', default=False, - description="Build with openspeedshop based patch.") variant('gtk', default=False, description="Build with gtkplus.") variant('webkit', default=False, @@ -76,55 +72,44 @@ class Qt(Package): variant('freetype', default='spack', description='Freetype2 support', values=('spack', 'qt', 'none'), multi=False) - # fix installation of pkgconfig files - # see https://github.com/Homebrew/homebrew-core/pull/5951 - patch('restore-pc-files.patch', when='@5.9:5.11 platform=darwin') + # Patches for qt@3 + patch('qt3-accept.patch', when='@3') + patch('qt3-headers.patch', when='@3') - patch('qt3accept.patch', when='@3.3.8b') - patch('qt3krell.patch', when='@3.3.8b+krellpatch') - patch('qt3ptrdiff.patch', when='@3.3.8b') - - # see https://bugreports.qt.io/browse/QTBUG-57656 - patch('QTBUG-57656.patch', when='@5.8.0') - # see https://bugreports.qt.io/browse/QTBUG-58038 - patch('QTBUG-58038.patch', when='@5.8.0') - - # https://github.com/xboxdrv/xboxdrv/issues/188 - patch('btn_trigger_happy.patch', when='@5.7.0:') - - # https://github.com/spack/spack/issues/1517 - patch('qt5-pcre.patch', when='@5:') - - patch('qt4-pcre-include-conflict.patch', when='@4.8.6') + # Patches for qt@4 + patch('qt4-configure-gcc.patch', when='@4:4.8.6 %gcc') + patch('qt4-87-configure-gcc.patch', when='@4.8.7 %gcc') patch('qt4-tools.patch', when='@4+tools') - if not MACOS_VERSION: - # Allow Qt's configure script to build the webkit option with more - # recent versions of gcc. - # https://github.com/spack/spack/issues/9205 - # https://github.com/spack/spack/issues/9209 - patch('qt4-gcc-and-webkit.patch', when='@4:4.8.6') - patch('qt4-gcc-and-webkit-487.patch', when='@4.8.7') - else: - patch('qt4-mac.patch', when='@4.8.7') + patch('qt4-mac.patch', when='@4.8.7 platform=darwin') + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=925811 + patch("qt4-qforeach.patch", when="@4 %gcc@9:") - # Fix build failure with newer versions of GCC + # Patches for qt@4: + # https://github.com/spack/spack/issues/1517 + patch('qt4-pcre.patch', when='@4') + patch('qt5-pcre.patch', when='@5:') + # https://bugreports.qt.io/browse/QTBUG-74196 + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89585 + patch('qt4-asm-volatile.patch', when='@4') + patch('qt5-asm-volatile.patch', when='@5.0.0:5.12.1') + + # Patches for qt@5 + # https://bugreports.qt.io/browse/QTBUG-74219 + patch('qt5-btn_trigger_happy.patch', when='@5.7:5.12') + # https://bugreports.qt.io/browse/QTBUG-57656 + patch('qt5-8-framework.patch', when='@5.8.0 +framework') + # https://bugreports.qt.io/browse/QTBUG-58038 + patch('qt5-8-freetype.patch', when='@5.8.0 freetype=spack') + # https://codereview.qt-project.org/c/qt/qtbase/+/245425 patch('https://github.com/qt/qtbase/commit/a52d7861edfb5956de38ba80015c4dd0b596259b.patch', sha256='c49b228c27e3ad46ec3af4bac0e9985af5b5b28760f238422d32e14f98e49b1e', working_dir='qtbase', when='@5.10:5.12.0 %gcc@9:') - - # Fix build of QT4 with GCC 9 - # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=925811 - patch("qt4-gcc9-qforeach.patch", when="@4:4.999 %gcc@9") - - # https://bugreports.qt.io/browse/QTBUG-74196 - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89585 - patch('qt4-gcc8.3-asm-volatile-fix.patch', when='@4') - patch('qt5-gcc8.3-asm-volatile-fix.patch', when='@5.0.0:5.12.1') - - # patch overflow builtins - patch('qt5_11-intel-overflow.patch', when='@5.11') - patch('qt5_12-intel-overflow.patch', when='@5.12:') + # https://github.com/Homebrew/homebrew-core/pull/5951 + patch('qt5-restore-pc-files.patch', when='@5.9:5.11 platform=darwin') + # https://github.com/spack/spack/issues/14400 + patch('qt5-11-intel-overflow.patch', when='@5.11 %intel') + patch('qt5-12-intel-overflow.patch', when='@5.12:5.14.0 %intel') # Build-only dependencies depends_on("pkgconfig", type='build') @@ -149,7 +134,7 @@ class Qt(Package): depends_on("libpng@1.2.57", when='@3') depends_on("pcre+multibyte", when='@5.0:5.8') depends_on("inputproto", when='@:5.8') - depends_on("openssl@:1.0.999", when='@:5.9+ssl~krellpatch') + depends_on("openssl@:1.0.999", when='@:5.9+ssl') depends_on("glib", when='@4:') depends_on("libpng", when='@4:') diff --git a/var/spack/repos/builtin/packages/qt/qt3accept.patch b/var/spack/repos/builtin/packages/qt/qt3-accept.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/qt3accept.patch rename to var/spack/repos/builtin/packages/qt/qt3-accept.patch diff --git a/var/spack/repos/builtin/packages/qt/qt3ptrdiff.patch b/var/spack/repos/builtin/packages/qt/qt3-headers.patch similarity index 65% rename from var/spack/repos/builtin/packages/qt/qt3ptrdiff.patch rename to var/spack/repos/builtin/packages/qt/qt3-headers.patch index 5043e4b5a88..52b133b571b 100644 --- a/var/spack/repos/builtin/packages/qt/qt3ptrdiff.patch +++ b/var/spack/repos/builtin/packages/qt/qt3-headers.patch @@ -18,3 +18,13 @@ #endif //#define QT_CHECK_VALUELIST_RANGE +--- qt-x11-free-3.3.8b/src/tools/qvaluevector.h 2008-01-15 13:09:13.000000000 -0600 ++++ qt-x11-free-3.3.8b-fixes/src/tools/qvaluevector.h 2015-07-08 15:47:34.758565247 -0500 +@@ -47,6 +47,7 @@ + + #ifndef QT_NO_STL + #include ++#include + #endif + + template diff --git a/var/spack/repos/builtin/packages/qt/qt3krell.patch b/var/spack/repos/builtin/packages/qt/qt3krell.patch deleted file mode 100644 index cee94b3cbc6..00000000000 --- a/var/spack/repos/builtin/packages/qt/qt3krell.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- qt-x11-free-3.3.8b/src/tools/qvaluevector.h 2008-01-15 13:09:13.000000000 -0600 -+++ qt-x11-free-3.3.8b-fixes/src/tools/qvaluevector.h 2015-07-08 15:47:34.758565247 -0500 -@@ -47,6 +47,7 @@ - - #ifndef QT_NO_STL - #include -+#include - #endif - - template diff --git a/var/spack/repos/builtin/packages/qt/qt4-gcc-and-webkit-487.patch b/var/spack/repos/builtin/packages/qt/qt4-87-configure-gcc.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/qt4-gcc-and-webkit-487.patch rename to var/spack/repos/builtin/packages/qt/qt4-87-configure-gcc.patch diff --git a/var/spack/repos/builtin/packages/qt/qt4-gcc8.3-asm-volatile-fix.patch b/var/spack/repos/builtin/packages/qt/qt4-asm-volatile.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/qt4-gcc8.3-asm-volatile-fix.patch rename to var/spack/repos/builtin/packages/qt/qt4-asm-volatile.patch diff --git a/var/spack/repos/builtin/packages/qt/qt4-gcc-and-webkit.patch b/var/spack/repos/builtin/packages/qt/qt4-configure-gcc.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/qt4-gcc-and-webkit.patch rename to var/spack/repos/builtin/packages/qt/qt4-configure-gcc.patch diff --git a/var/spack/repos/builtin/packages/qt/qt4-pcre-include-conflict.patch b/var/spack/repos/builtin/packages/qt/qt4-pcre.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/qt4-pcre-include-conflict.patch rename to var/spack/repos/builtin/packages/qt/qt4-pcre.patch diff --git a/var/spack/repos/builtin/packages/qt/qt4-gcc9-qforeach.patch b/var/spack/repos/builtin/packages/qt/qt4-qforeach.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/qt4-gcc9-qforeach.patch rename to var/spack/repos/builtin/packages/qt/qt4-qforeach.patch diff --git a/var/spack/repos/builtin/packages/qt/qt5_11-intel-overflow.patch b/var/spack/repos/builtin/packages/qt/qt5-11-intel-overflow.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/qt5_11-intel-overflow.patch rename to var/spack/repos/builtin/packages/qt/qt5-11-intel-overflow.patch diff --git a/var/spack/repos/builtin/packages/qt/qt5_12-intel-overflow.patch b/var/spack/repos/builtin/packages/qt/qt5-12-intel-overflow.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/qt5_12-intel-overflow.patch rename to var/spack/repos/builtin/packages/qt/qt5-12-intel-overflow.patch diff --git a/var/spack/repos/builtin/packages/qt/QTBUG-57656.patch b/var/spack/repos/builtin/packages/qt/qt5-8-framework.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/QTBUG-57656.patch rename to var/spack/repos/builtin/packages/qt/qt5-8-framework.patch diff --git a/var/spack/repos/builtin/packages/qt/QTBUG-58038.patch b/var/spack/repos/builtin/packages/qt/qt5-8-freetype.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/QTBUG-58038.patch rename to var/spack/repos/builtin/packages/qt/qt5-8-freetype.patch diff --git a/var/spack/repos/builtin/packages/qt/qt5-gcc8.3-asm-volatile-fix.patch b/var/spack/repos/builtin/packages/qt/qt5-asm-volatile.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/qt5-gcc8.3-asm-volatile-fix.patch rename to var/spack/repos/builtin/packages/qt/qt5-asm-volatile.patch diff --git a/var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch b/var/spack/repos/builtin/packages/qt/qt5-btn_trigger_happy.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch rename to var/spack/repos/builtin/packages/qt/qt5-btn_trigger_happy.patch diff --git a/var/spack/repos/builtin/packages/qt/restore-pc-files.patch b/var/spack/repos/builtin/packages/qt/qt5-restore-pc-files.patch similarity index 100% rename from var/spack/repos/builtin/packages/qt/restore-pc-files.patch rename to var/spack/repos/builtin/packages/qt/qt5-restore-pc-files.patch From 8783f16e36ee5844fd979ba10660839d1b856870 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Mon, 17 Feb 2020 15:21:58 -0800 Subject: [PATCH 095/238] libcircle depends on a provider of pkgconfig for build (#15029) --- var/spack/repos/builtin/packages/libcircle/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libcircle/package.py b/var/spack/repos/builtin/packages/libcircle/package.py index ab7539084d3..749483678c6 100644 --- a/var/spack/repos/builtin/packages/libcircle/package.py +++ b/var/spack/repos/builtin/packages/libcircle/package.py @@ -19,7 +19,7 @@ class Libcircle(AutotoolsPackage): version('0.2.1-rc.1', sha256='5747f91cf4417023304dcc92fd07e3617ac712ca1eeb698880979bbca3f54865') depends_on('mpi') - depends_on('pkg-config', type='build') + depends_on('pkgconfig', type='build') @when('@master') def autoreconf(self, spec, prefix): From 6c93ef5088de39d6e7a294b5012819b0bb2036ab Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 00:25:46 +0100 Subject: [PATCH 096/238] Add extra version of py-futures (#14979) * Add extra version of py-futures * Update package.py --- var/spack/repos/builtin/packages/py-futures/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-futures/package.py b/var/spack/repos/builtin/packages/py-futures/package.py index 699e36f7eae..5d3c82aacd9 100644 --- a/var/spack/repos/builtin/packages/py-futures/package.py +++ b/var/spack/repos/builtin/packages/py-futures/package.py @@ -12,6 +12,8 @@ class PyFutures(PythonPackage): homepage = "https://pypi.python.org/pypi/futures" url = "https://pypi.io/packages/source/f/futures/futures-3.0.5.tar.gz" + version('3.2.0', sha256='9ec02aa7d674acb8618afb127e27fde7fc68994c0437ad759fa094a574adb265') version('3.0.5', sha256='0542525145d5afc984c88f914a0c85c77527f65946617edb5274f72406f981df') - depends_on('py-setuptools', type='build') + depends_on('py-setuptools', type=('build', 'run')) + depends_on('python@2.6:2.8', type=('build', 'run')) From 17f19ad4078a709ab6280c6332407af6014a3b06 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 00:38:53 +0100 Subject: [PATCH 097/238] Add extra version of py-dill (#14971) * Add extra version of py-dill * Update package.py --- var/spack/repos/builtin/packages/py-dill/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-dill/package.py b/var/spack/repos/builtin/packages/py-dill/package.py index 9c19f73822a..485dfd9d668 100644 --- a/var/spack/repos/builtin/packages/py-dill/package.py +++ b/var/spack/repos/builtin/packages/py-dill/package.py @@ -12,6 +12,7 @@ class PyDill(PythonPackage): homepage = "https://github.com/uqfoundation/dill" url = "https://pypi.io/packages/source/d/dill/dill-0.2.7.tar.gz" + version('0.2.9', sha256='f6d6046f9f9195206063dd0415dff185ad593d6ee8b0e67f12597c0f4df4986f') version('0.2.7', sha256='ddda0107e68e4eb1772a9f434f62a513c080c7171bd0dd6fb65d992788509812') version('0.2.6', sha256='6c1ccca68be483fa8c66e85a89ffc850206c26373aa77a97b83d8d0994e7f1fd') version('0.2.5', sha256='e82b3db7b9d962911c9c2d5cf2bb4a04f43933f505a624fb7dc5f68b949f0a5c') @@ -21,7 +22,7 @@ class PyDill(PythonPackage): version('0.2.1', sha256='a54401bdfae419cfe1c9e0b48e9b290afccaa413d2319d9bb0fdb85c130a7923') version('0.2', sha256='aba8d4c81c4136310e6ce333bd6f4f3ea2d53bd367e2f69c864428f260c0308c') - depends_on('python@2.5:2.8,3.1:') + depends_on('python@2.5:2.8,3.1:', type=('build', 'run')) depends_on('py-setuptools@0.6:', type='build') From 5ea7031019aa6a69a39d5ebe659a6d9c97e68ded Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 00:39:22 +0100 Subject: [PATCH 098/238] Add extra version of py-autopep8 (#14970) * Add extra version of py-autopep8 * Update package.py --- var/spack/repos/builtin/packages/py-autopep8/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-autopep8/package.py b/var/spack/repos/builtin/packages/py-autopep8/package.py index 4cb29e5a55c..296d0bd4c3e 100644 --- a/var/spack/repos/builtin/packages/py-autopep8/package.py +++ b/var/spack/repos/builtin/packages/py-autopep8/package.py @@ -13,14 +13,16 @@ class PyAutopep8(PythonPackage): homepage = "https://github.com/hhatto/autopep8" url = "https://pypi.io/packages/source/a/autopep8/autopep8-1.2.4.tar.gz" + version('1.4.4', sha256='4d8eec30cc81bc5617dbf1218201d770dc35629363547f17577c61683ccfb3ee') version('1.3.3', sha256='ff787bffb812818c3071784b5ce9a35f8c481a0de7ea0ce4f8b68b8788a12f30') version('1.2.4', sha256='38e31e266e29808e8a65a307778ed8e402e1f0d87472009420d6d18146cdeaa2') version('1.2.2', sha256='ecc51614755c7f697e83478f87eb6bbd009075a397c15080f0311aaecbbdfca8') extends('python', ignore='bin/pep8') - depends_on('python@2.6:2.8,3.2:') + depends_on('python@2.6:2.8,3.2:', type=('build', 'run')) depends_on('py-pycodestyle@1.5.7:1.7.0', type=('build', 'run'), when='@:1.2.4') depends_on('py-pycodestyle@2.3.0:', type=('build', 'run'), when='@1.3:') + depends_on('py-pycodestyle@2.4.0:', type=('build', 'run'), when='@1.4:') depends_on('py-setuptools', type='build') From 21156e6243b81c004f665331426adf02f92bf7db Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 00:39:50 +0100 Subject: [PATCH 099/238] Add new version of davix (#14944) * Add new version of davix * Update package.py --- var/spack/repos/builtin/packages/davix/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/davix/package.py b/var/spack/repos/builtin/packages/davix/package.py index 0510b794d99..6cd0fe9bb4e 100644 --- a/var/spack/repos/builtin/packages/davix/package.py +++ b/var/spack/repos/builtin/packages/davix/package.py @@ -14,8 +14,8 @@ class Davix(CMakePackage): list_url = "http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix/" list_depth = 1 - version('0.6.8', sha256='e1820f4cc3fc44858ae97197a3922cce2a1130ff553b080ba19e06eb8383ddf7', - url='http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix/0.6.8/davix-0.6.8.tar.gz') + version('0.7.3', sha256='cd46276e72c6a0da1e2ad30eb66ec509a4c023687767c62a66713fa8c23d328a') + version('0.6.8', sha256='e1820f4cc3fc44858ae97197a3922cce2a1130ff553b080ba19e06eb8383ddf7') depends_on('pkgconfig', type='build') depends_on('libxml2') From 80123e0d1a5adf580a388f2adce870eac5988249 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 00:40:34 +0100 Subject: [PATCH 100/238] Add new version of ccache; update URL (#14942) * Add new version of ccache; update URL * Update var/spack/repos/builtin/packages/ccache/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/ccache/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/ccache/package.py b/var/spack/repos/builtin/packages/ccache/package.py index 1060c89f428..97ebf17441b 100644 --- a/var/spack/repos/builtin/packages/ccache/package.py +++ b/var/spack/repos/builtin/packages/ccache/package.py @@ -12,13 +12,14 @@ class Ccache(AutotoolsPackage): again.""" homepage = "https://ccache.samba.org/" - url = "https://www.samba.org/ftp/ccache/ccache-3.3.4.tar.gz" + url = "https://github.com/ccache/ccache/releases/download/v3.7.1/ccache-3.7.1.tar.gz" + version('3.7.1', sha256='e562fcdbe766406b6fe4bf97ce5c001d2be8a17465f33bcddefc9499bbb057d8') version('3.3.4', sha256='1348b54e7c35dd2f8d17923389e03c546e599cfbde6459d2f31cf6f1521ec538') version('3.3.3', sha256='87a399a2267cfac3f36411fbc12ff8959f408cffd050ad15fe423df88e977e8f') version('3.3.2', sha256='bf4a150dea611a206a933e122bd545dd6c5111d319505e0e30fef75f88651847') version('3.3.1', sha256='4101f9937cd6e8f50d0a5882f7e9a7312ba42c01ff41e4f359c94ae2c9b87879') - version('3.3', sha256='b220fce435fe3d86b8b90097e986a17f6c1f971e0841283dd816adb238c5fd6a') + version('3.3', sha256='b220fce435fe3d86b8b90097e986a17f6c1f971e0841283dd816adb238c5fd6a') version('3.2.9', sha256='1e13961b83a3d215c4013469c149414a79312a22d3c7bf9f946abac9ee33e63f') depends_on('gperf') From 1d7fc47672ccdbc8665ed4799bdc854ed35fb74c Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 00:41:08 +0100 Subject: [PATCH 101/238] Add new version of cairo (#14941) * Add new version of cairo * Update var/spack/repos/builtin/packages/cairo/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/cairo/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cairo/package.py b/var/spack/repos/builtin/packages/cairo/package.py index 829bb0866b2..0092d0bfb1b 100644 --- a/var/spack/repos/builtin/packages/cairo/package.py +++ b/var/spack/repos/builtin/packages/cairo/package.py @@ -13,7 +13,9 @@ class Cairo(AutotoolsPackage): homepage = "https://www.cairographics.org/" url = "https://www.cairographics.org/releases/cairo-1.16.0.tar.xz" - version('1.16.0', sha256='5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331') + version('1.17.2', sha256='6b70d4655e2a47a22b101c666f4b29ba746eda4aa8a0f7255b32b2e9408801df', + url='https://cairographics.org/snapshots/cairo-1.17.2.tar.xz') # Snapshot + version('1.16.0', sha256='5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331', preferred=True) version('1.14.12', sha256='8c90f00c500b2299c0a323dd9beead2a00353752b2092ead558139bd67f7bf16') version('1.14.8', sha256='d1f2d98ae9a4111564f6de4e013d639cf77155baf2556582295a0f00a9bc5e20') version('1.14.0', sha256='2cf5f81432e77ea4359af9dcd0f4faf37d015934501391c311bfd2d19a0134b7') @@ -34,6 +36,7 @@ class Cairo(AutotoolsPackage): depends_on('libpng', when='+png') depends_on('librsvg', when='+svg') depends_on('glib') + depends_on('pixman@0.36.0:', when='@1.17.2:') depends_on('pixman') depends_on('automake', type='build') depends_on('autoconf', type='build') @@ -47,7 +50,7 @@ class Cairo(AutotoolsPackage): conflicts('+svg', when='platform=darwin') # patch from https://gitlab.freedesktop.org/cairo/cairo/issues/346 - patch('fontconfig.patch', when='@1.16.0') + patch('fontconfig.patch', when='@1.16.0:1.17.2') def setup_build_environment(self, env): env.set('NOCONFIGURE', "1") From 9f89dce52f3094736169d6ff19f870f775e719ff Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 17 Feb 2020 17:41:30 -0600 Subject: [PATCH 102/238] Fix mercurial certificate finding, add latest version (#15026) --- .../builtin/packages/mercurial/package.py | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/mercurial/package.py b/var/spack/repos/builtin/packages/mercurial/package.py index f2f398f176e..620ef19bdba 100644 --- a/var/spack/repos/builtin/packages/mercurial/package.py +++ b/var/spack/repos/builtin/packages/mercurial/package.py @@ -11,7 +11,7 @@ class Mercurial(PythonPackage): """Mercurial is a free, distributed source control management tool.""" homepage = "https://www.mercurial-scm.org" - url = "https://www.mercurial-scm.org/release/mercurial-5.1.2.tar.gz" + url = "https://www.mercurial-scm.org/release/mercurial-5.3.tar.gz" import_modules = [ 'hgext', 'hgext3rd', 'mercurial', 'hgext.convert', 'hgext.fsmonitor', @@ -20,6 +20,7 @@ class Mercurial(PythonPackage): 'mercurial.httpclient', 'mercurial.pure' ] + version('5.3', sha256='e57ff61d6b67695149dd451922b40aa455ab02e01711806a131a1e95c544f9b9') version('5.1.2', sha256='15af0b090b23649e0e53621a88dde97b55a734d7cb08b77d3df284db70d44e2e') version('5.1.1', sha256='35fc8ba5e0379c1b3affa2757e83fb0509e8ac314cbd9f1fd133cf265d16e49f') version('4.9.1', sha256='1bdd21bb87d1e05fb5cd395d488d0e0cc2f2f90ce0fd248e31a03595da5ccb47') @@ -61,42 +62,42 @@ def post_install(self): install('hg-ssh.8', prefix.man.man8) # Install completion scripts - contrib = join_path(prefix, 'contrib') + contrib = prefix.contrib mkdir(contrib) with working_dir('contrib'): - install('bash_completion', join_path(contrib, 'bash_completion')) - install('zsh_completion', join_path(contrib, 'zsh_completion')) + install('bash_completion', contrib.bash_completion) + install('zsh_completion', contrib.zsh_completion) @run_after('install') def configure_certificates(self): """Configuration of HTTPS certificate authorities https://www.mercurial-scm.org/wiki/CACertificates""" - etc_dir = join_path(self.prefix.etc, 'mercurial') + etc_dir = self.prefix.etc.mercurial mkdirp(etc_dir) - hgrc_filename = join_path(etc_dir, 'hgrc') + hgrc_filename = etc_dir.hgrc # Use certifi to find the location of the CA certificate print_str = self.spec['python'].package.print_string('certifi.where()') - certificate = python('-c', 'import certifi; ' + print_str) + certificate = python('-c', 'import certifi; ' + print_str, output=str) if not certificate: tty.warn('CA certificate not found. You may not be able to ' 'connect to an HTTPS server. If your CA certificate ' 'is in a non-standard location, you should add it to ' '{0}.'.format(hgrc_filename)) - - # Write the global mercurial configuration file - with open(hgrc_filename, 'w') as hgrc: - hgrc.write('[web]\ncacerts = {0}'.format(certificate)) + else: + # Write the global mercurial configuration file + with open(hgrc_filename, 'w') as hgrc: + hgrc.write('[web]\ncacerts = {0}'.format(certificate)) @run_after('install') @on_package_attributes(run_tests=True) def check_install(self): """Sanity-check setup.""" - hg = Executable(join_path(self.prefix.bin, 'hg')) + hg = Executable(self.prefix.bin.hg) hg('debuginstall') hg('version') From 342200774b9ee5441d33dc985d889b0a8f21e3e2 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 17 Feb 2020 17:41:48 -0600 Subject: [PATCH 103/238] spack extensions prints list of extendable packages (#14473) * spack extensions prints list of extendable packages * Update tab completion scripts --- lib/spack/spack/cmd/extensions.py | 17 ++++++++++++++++- lib/spack/spack/test/cmd/extensions.py | 5 +++++ share/spack/bash/spack-completion.in | 2 +- share/spack/spack-completion.bash | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/cmd/extensions.py b/lib/spack/spack/cmd/extensions.py index e834d7fd186..b4fb7faa1f9 100644 --- a/lib/spack/spack/cmd/extensions.py +++ b/lib/spack/spack/cmd/extensions.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import argparse +import sys import llnl.util.tty as tty from llnl.util.tty.colify import colify @@ -21,6 +22,8 @@ def setup_parser(subparser): + subparser.epilog = 'If called without argument returns ' \ + 'the list of all valid extendable packages' arguments.add_common_arguments(subparser, ['long', 'very_long']) subparser.add_argument('-d', '--deps', action='store_true', help='output dependencies along with found specs') @@ -42,7 +45,19 @@ def setup_parser(subparser): def extensions(parser, args): if not args.spec: - tty.die("extensions requires a package spec.") + # If called without arguments, list all the extendable packages + isatty = sys.stdout.isatty() + if isatty: + tty.info('Extendable packages:') + + extendable_pkgs = [] + for name in spack.repo.all_package_names(): + pkg = spack.repo.get(name) + if pkg.extendable: + extendable_pkgs.append(name) + + colify(extendable_pkgs, indent=4) + return # Checks spec = cmd.parse_specs(args.spec) diff --git a/lib/spack/spack/test/cmd/extensions.py b/lib/spack/spack/test/cmd/extensions.py index 505573a7bc3..7fc56593ebe 100644 --- a/lib/spack/spack/test/cmd/extensions.py +++ b/lib/spack/spack/test/cmd/extensions.py @@ -69,6 +69,11 @@ def check_output(ni, na): check_output(1, 1) +def test_extensions_no_arguments(mock_packages): + out = extensions() + assert 'python' in out + + def test_extensions_raises_if_not_extendable(mock_packages): with pytest.raises(SpackCommandError): extensions("flake8") diff --git a/share/spack/bash/spack-completion.in b/share/spack/bash/spack-completion.in index ca15b8dfb27..164fc5c5b3d 100755 --- a/share/spack/bash/spack-completion.in +++ b/share/spack/bash/spack-completion.in @@ -226,7 +226,7 @@ _config_sections() { _extensions() { if [[ -z "${SPACK_EXTENSIONS:-}" ]] then - SPACK_EXTENSIONS="aspell go-bootstrap go icedtea jdk kim-api lua matlab mofem-cephas octave openjdk perl python r ruby rust tcl yorick" + SPACK_EXTENSIONS="$(spack extensions)" fi SPACK_COMPREPLY="$SPACK_EXTENSIONS" } diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index b17733e1bf7..8f677adbf98 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -226,7 +226,7 @@ _config_sections() { _extensions() { if [[ -z "${SPACK_EXTENSIONS:-}" ]] then - SPACK_EXTENSIONS="aspell go-bootstrap go icedtea jdk kim-api lua matlab mofem-cephas octave openjdk perl python r ruby rust tcl yorick" + SPACK_EXTENSIONS="$(spack extensions)" fi SPACK_COMPREPLY="$SPACK_EXTENSIONS" } From 1270b4d0dfe5976462cc9c5ef61679c79967f21b Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Mon, 17 Feb 2020 21:24:33 -0500 Subject: [PATCH 104/238] Fix CLHEP fetch URL and add new version (#15032) --- var/spack/repos/builtin/packages/clhep/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py index 0477703d836..828f46ec974 100644 --- a/var/spack/repos/builtin/packages/clhep/package.py +++ b/var/spack/repos/builtin/packages/clhep/package.py @@ -10,10 +10,11 @@ class Clhep(CMakePackage): """CLHEP is a C++ Class Library for High Energy Physics. """ homepage = "http://proj-clhep.web.cern.ch/proj-clhep/" - url = "http://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/tarFiles/clhep-2.2.0.5.tgz" + url = "http://proj-clhep.web.cern.ch/proj-clhep/dist1/clhep-2.4.1.3.tgz" list_url = "https://proj-clhep.web.cern.ch/proj-clhep/" list_depth = 1 + version('2.4.1.3', sha256='27c257934929f4cb1643aa60aeaad6519025d8f0a1c199bc3137ad7368245913') version('2.4.1.2', sha256='ff96e7282254164380460bc8cf2dff2b58944084eadcd872b5661eb5a33fa4b8') version('2.4.1.0', sha256='d14736eb5c3d21f86ce831dc1afcf03d423825b35c84deb6f8fd16773528c54d') version('2.4.0.4', sha256='eb013841c57990befa1e977a11a552ab8328733c1c3b6cecfde86da40dc22113') From 76bf5c53fa229356794d41a1b4186509a71732aa Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 18 Feb 2020 03:25:20 +0100 Subject: [PATCH 105/238] node-js: Add 12.16.0 and 13.8.0 (#15024) --- var/spack/repos/builtin/packages/node-js/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index 155d030f29d..0089ec6dacc 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -18,10 +18,12 @@ class NodeJs(Package): list_depth = 1 # Current (latest features) + version('13.8.0', sha256='815b5e1b18114f35da89e4d98febeaba97555d51ef593bd5175db2b05f2e8be6') version('13.5.0', sha256='4b8078d896a7550d7ed399c1b4ac9043e9f883be404d9b337185c8d8479f2db8') # LTS (recommended for most users) - version('12.14.0', sha256='5c1939867228f3845c808ef84a89c8ee93cc35f857bf7587ecee1b5a6d9da67b', preferred=True) + version('12.16.0', sha256='ae2dfe74485d821d4fef7cf1802acd2322cd994c853a2327c4306952f4453441', preferred=True) + version('12.14.0', sha256='5c1939867228f3845c808ef84a89c8ee93cc35f857bf7587ecee1b5a6d9da67b') version('11.1.0', sha256='3f53b5ac25b2d36ad538267083c0e603d9236867a936c22a9116d95fa10c60d5') version('10.13.0', sha256='aa06825fff375ece7c0d881ae0de5d402a857e8cabff9b4a50f2f0b7b44906be') version('8.9.1', sha256='32491b7fcc4696b2cdead45c47e52ad16bbed8f78885d32e873952fee0f971e1') From 86a3d58159f438d9442623bdfbf896901079a625 Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Tue, 18 Feb 2020 03:27:06 +0100 Subject: [PATCH 106/238] py-cookiecutter: new package (#14911) * py-cookiecutter: new package * address comments --- .../packages/py-cookiecutter/package.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-cookiecutter/package.py diff --git a/var/spack/repos/builtin/packages/py-cookiecutter/package.py b/var/spack/repos/builtin/packages/py-cookiecutter/package.py new file mode 100644 index 00000000000..4a39c6ea3de --- /dev/null +++ b/var/spack/repos/builtin/packages/py-cookiecutter/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 PyCookiecutter(PythonPackage): + """A command-line utility that creates projects from cookiecutters + (project templates). E.g. Python package projects, jQuery plugin + projects.""" + + homepage = "https://cookiecutter.readthedocs.io/en/latest/" + url = "https://github.com/audreyr/cookiecutter/archive/1.6.0.tar.gz" + + version('1.6.0', sha256='0c9018699b556b83d7c37b27fe0cc17485b90b6e1f47365b3cdddf77f6ca9d36') + + depends_on('py-setuptools', type='build') + depends_on('py-future@0.15.2:', type=('build', 'run')) + depends_on('py-binaryornot@0.2.0:', type=('build', 'run')) + depends_on('py-jinja2@2.7:', type=('build', 'run')) + depends_on('py-click@5.0:', type=('build', 'run')) + depends_on('py-whichcraft@0.4.0:', type=('build', 'run')) + depends_on('py-poyo@0.1.0:', type=('build', 'run')) + depends_on('py-jinja2-time@0.1.0:', type=('build', 'run')) + depends_on('py-requests@2.18.0:', type=('build', 'run')) From f95348074b5d94961820fa551cd02113a571ebcd Mon Sep 17 00:00:00 2001 From: noguchi-k <55966120+noguchi-k@users.noreply.github.com> Date: Tue, 18 Feb 2020 23:08:10 +0900 Subject: [PATCH 107/238] pegtl: change to virtual destructor (#14939) * pegtl: change to virtual destructor * pegtl: fix patch --- .../pegtl/change_to_virtual_destructor.patch | 13 +++++++++++++ var/spack/repos/builtin/packages/pegtl/package.py | 5 ++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/pegtl/change_to_virtual_destructor.patch diff --git a/var/spack/repos/builtin/packages/pegtl/change_to_virtual_destructor.patch b/var/spack/repos/builtin/packages/pegtl/change_to_virtual_destructor.patch new file mode 100644 index 00000000000..8de5c4e4238 --- /dev/null +++ b/var/spack/repos/builtin/packages/pegtl/change_to_virtual_destructor.patch @@ -0,0 +1,13 @@ +--- spack-src/src/example/pegtl/json_classes.hpp.org 2020-02-14 11:07:25.117102793 +0900 ++++ spack-src/src/example/pegtl/json_classes.hpp 2020-02-14 11:08:06.841397607 +0900 +@@ -35,9 +35,7 @@ + { + } + +- ~json_base() +- { +- } ++ virtual ~json_base() = default; + }; + + inline std::ostream& operator<<( std::ostream& o, const json_base& j ) diff --git a/var/spack/repos/builtin/packages/pegtl/package.py b/var/spack/repos/builtin/packages/pegtl/package.py index 0da4bfe16fc..7fe05c90fe5 100644 --- a/var/spack/repos/builtin/packages/pegtl/package.py +++ b/var/spack/repos/builtin/packages/pegtl/package.py @@ -18,6 +18,9 @@ class Pegtl(CMakePackage): url = "https://github.com/taocpp/PEGTL/tarball/2.1.4" git = "https://github.com/taocpp/PEGTL.git" - version('develop', branch='master') + version('master', branch='master') version('2.1.4', sha256='d990dccc07b4d9ba548326d11c5c5e34fa88b34fe113cb5377da03dda29f23f2') version('2.0.0', sha256='5aae0505077e051cae4d855c38049cc6cf71103a6cc8d0ddef01a576e8a60cc0') + + # Ref: https://github.com/taocpp/PEGTL/blob/master/src/example/pegtl/json_classes.hpp + patch('change_to_virtual_destructor.patch', when='@:2.4') From fa286020920c03e15c5201e801e38f4a7c178ddb Mon Sep 17 00:00:00 2001 From: h-murai Date: Tue, 18 Feb 2020 23:08:37 +0900 Subject: [PATCH 108/238] an argument 'buf_size' of 'h5fget_file_image_c' should be intent(out). (#15011) * an argument 'buf_size' of 'h5fget_file_image_c' should be intent(out). * correct format errors * some modifications based on the comments from the reviewer --- var/spack/repos/builtin/packages/hdf5/package.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index cbc445edf0a..3c62d46f0d6 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -117,6 +117,22 @@ class Hdf5(AutotoolsPackage): patch('h5public-skip-mpicxx.patch', when='@:1.8.21,1.10.0:1.10.5+mpi~cxx', sha256='b61e2f058964ad85be6ee5ecea10080bf79e73f83ff88d1fa4b602d00209da9c') + # The argument 'buf_size' of the C function 'h5fget_file_image_c' is + # declared as intent(in) though it is modified by the invocation. As a + # result, aggressive compilers such as Fujitsu's may do a wrong + # optimization to cause an error. + def patch(self): + filter_file( + 'INTEGER(SIZE_T), INTENT(IN) :: buf_size', + 'INTEGER(SIZE_T), INTENT(OUT) :: buf_size', + 'fortran/src/H5Fff.F90', + string=True, ignore_absent=True) + filter_file( + 'INTEGER(SIZE_T), INTENT(IN) :: buf_size', + 'INTEGER(SIZE_T), INTENT(OUT) :: buf_size', + 'fortran/src/H5Fff_F03.f90', + string=True, ignore_absent=True) + filter_compiler_wrappers('h5cc', 'h5c++', 'h5fc', relative_root='bin') def url_for_version(self, version): From f396106d1cb3c17df9d1c791a98f08baf73ac461 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Tue, 18 Feb 2020 10:31:59 -0500 Subject: [PATCH 109/238] Update `davix` versions and add version restriction for ROOT (#15038) From ROOT cmake output: ``` -- Checking for module 'davix>=0.6.4' -- Found davix, version 0.6.8 CMake Warning at cmake/modules/SearchInstalledSoftware.cmake:960 (message): Davix versions 0.6.8 to 0.7.0 have a bug and do not work with ROOT, please upgrade to 0.7.1 or later. ``` --- var/spack/repos/builtin/packages/davix/package.py | 2 ++ var/spack/repos/builtin/packages/root/package.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/davix/package.py b/var/spack/repos/builtin/packages/davix/package.py index 6cd0fe9bb4e..faed2f16fe0 100644 --- a/var/spack/repos/builtin/packages/davix/package.py +++ b/var/spack/repos/builtin/packages/davix/package.py @@ -14,7 +14,9 @@ class Davix(CMakePackage): list_url = "http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix/" list_depth = 1 + version('0.7.5', sha256='d920ca976846875d83af4dc50c99280bb3741fcf8351d5733453e70fa5fe6fc8') version('0.7.3', sha256='cd46276e72c6a0da1e2ad30eb66ec509a4c023687767c62a66713fa8c23d328a') + version('0.6.9', sha256='fbd97eb5fdf82ca48770d06bf8e2805b35f23255478aa381a9d25a49eb98e348') version('0.6.8', sha256='e1820f4cc3fc44858ae97197a3922cce2a1130ff553b080ba19e06eb8383ddf7') depends_on('pkgconfig', type='build') diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 598fd78dd95..4def4129da2 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -207,7 +207,7 @@ class Root(CMakePackage): depends_on('py-numpy', when='+tmva') # Optional dependencies - depends_on('davix', when='+davix') + depends_on('davix @0.7.1:', when='+davix') depends_on('cfitsio', when='+fits') depends_on('fftw', when='+fftw') depends_on('graphviz', when='+graphviz') From 82f76c44a0818f3a10111ad4ab0bb88facb21645 Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Tue, 18 Feb 2020 09:20:14 -0800 Subject: [PATCH 110/238] skip gpg tests when no gpg executable (#14935) * skip gpg tests when no gpg executable * flake --- lib/spack/spack/test/ci.py | 10 ++++++++++ lib/spack/spack/test/cmd/ci.py | 10 ++++++++++ lib/spack/spack/test/cmd/gpg.py | 10 +++++++++- lib/spack/spack/test/packaging.py | 9 +++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/test/ci.py b/lib/spack/spack/test/ci.py index 3143a938c28..a153437ffab 100644 --- a/lib/spack/spack/test/ci.py +++ b/lib/spack/spack/test/ci.py @@ -13,6 +13,7 @@ import spack.paths as spack_paths import spack.spec as spec import spack.util.web as web_util +import spack.util.gpg @pytest.fixture @@ -41,6 +42,15 @@ def test_urlencode_string(): assert(s_enc == 'Spack+Test+Project') +def has_gpg(): + try: + gpg = spack.util.gpg.Gpg.gpg() + except spack.util.gpg.SpackGPGError: + gpg = None + return bool(gpg) + + +@pytest.mark.skipif(not has_gpg(), reason='This test requires gpg') def test_import_signing_key(mock_gnupghome): signing_key_dir = spack_paths.mock_gpg_keys_path signing_key_path = os.path.join(signing_key_dir, 'package-signing-key') diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index 49663b34092..89ed4718687 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -21,6 +21,7 @@ from spack.test.conftest import MockPackage, MockPackageMultiRepo import spack.util.executable as exe import spack.util.spack_yaml as syaml +import spack.util.gpg ci_cmd = SpackCommand('ci') @@ -32,6 +33,14 @@ git = exe.which('git', required=True) +def has_gpg(): + try: + gpg = spack.util.gpg.Gpg.gpg() + except spack.util.gpg.SpackGPGError: + gpg = None + return bool(gpg) + + @pytest.fixture() def env_deactivate(): yield @@ -494,6 +503,7 @@ def test_ci_pushyaml(tmpdir): @pytest.mark.disable_clean_stage_check +@pytest.mark.skipif(not has_gpg(), reason='This test requires gpg') def test_push_mirror_contents(tmpdir, mutable_mock_env_path, env_deactivate, install_mockery, mock_packages, mock_fetch, mock_stage, mock_gnupghome): diff --git a/lib/spack/spack/test/cmd/gpg.py b/lib/spack/spack/test/cmd/gpg.py index 4333a38fe2c..56d178f449c 100644 --- a/lib/spack/spack/test/cmd/gpg.py +++ b/lib/spack/spack/test/cmd/gpg.py @@ -52,8 +52,16 @@ def test_no_gpg_in_path(tmpdir, mock_gnupghome, monkeypatch): spack.util.gpg.Gpg.gpg() +def has_gpg(): + try: + gpg = spack.util.gpg.Gpg.gpg() + except spack.util.gpg.SpackGPGError: + gpg = None + return bool(gpg) + + @pytest.mark.maybeslow -@pytest.mark.skipif(not spack.util.gpg.Gpg.gpg(), +@pytest.mark.skipif(not has_gpg(), reason='These tests require gnupg2') def test_gpg(tmpdir, mock_gnupghome): # Verify a file with an empty keyring. diff --git a/lib/spack/spack/test/packaging.py b/lib/spack/spack/test/packaging.py index 8f11b8ec993..39d12df7b71 100644 --- a/lib/spack/spack/test/packaging.py +++ b/lib/spack/spack/test/packaging.py @@ -31,6 +31,14 @@ from spack.relocate import modify_macho_object, macho_get_paths +def has_gpg(): + try: + gpg = spack.util.gpg.Gpg.gpg() + except spack.util.gpg.SpackGPGError: + gpg = None + return bool(gpg) + + def fake_fetchify(url, pkg): """Fake the URL for a package so it downloads from a file.""" fetcher = FetchStrategyComposite() @@ -38,6 +46,7 @@ def fake_fetchify(url, pkg): pkg.fetcher = fetcher +@pytest.mark.skipif(not has_gpg(), reason='This test requires gpg') @pytest.mark.usefixtures('install_mockery', 'mock_gnupghome') def test_buildcache(mock_archive, tmpdir): # tweak patchelf to only do a download From 02f3fc6d7acabc3c836226fa269466a353346022 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:34:30 +0100 Subject: [PATCH 111/238] Add extra version of py-owslib (#15046) --- var/spack/repos/builtin/packages/py-owslib/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-owslib/package.py b/var/spack/repos/builtin/packages/py-owslib/package.py index 7f90a62ee1f..459dab7727e 100644 --- a/var/spack/repos/builtin/packages/py-owslib/package.py +++ b/var/spack/repos/builtin/packages/py-owslib/package.py @@ -14,6 +14,7 @@ class PyOwslib(PythonPackage): homepage = "http://http://geopython.github.io/OWSLib/#installation" url = "https://pypi.io/packages/source/O/OWSLib/OWSLib-0.16.0.tar.gz" + version('0.17.1', sha256='b2e7fd694d3cffcee79317bad492d60c0aa887aea6916517c051c3247b33b5a5') version('0.16.0', sha256='ec95a5e93c145a5d84b0074b9ea27570943486552a669151140debf08a100554') depends_on('py-setuptools', type='build') From 6f6e1a8c4ae62e22e6eb196b964883c2d30c2f48 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:34:57 +0100 Subject: [PATCH 112/238] Add extra version of py-oauthlib (#15045) --- var/spack/repos/builtin/packages/py-oauthlib/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-oauthlib/package.py b/var/spack/repos/builtin/packages/py-oauthlib/package.py index 659b272901c..163db071ad7 100644 --- a/var/spack/repos/builtin/packages/py-oauthlib/package.py +++ b/var/spack/repos/builtin/packages/py-oauthlib/package.py @@ -16,6 +16,7 @@ class PyOauthlib(PythonPackage): url = "https://pypi.io/packages/source/o/oauthlib/oauthlib-3.1.0.tar.gz" version('3.1.0', sha256='bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889') + version('3.0.1', sha256='0ce32c5d989a1827e3f1148f98b9085ed2370fc939bf524c9c851d8714797298') version('2.0.2', sha256='b3b9b47f2a263fe249b5b48c4e25a5bce882ff20a0ac34d553ce43cff55b53ac') variant('extras', default=True, description='Build with pyjwt, blinker, cryptography') From d08f53c5fb9235f20564fb072651d33e87f776ce Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:37:26 +0100 Subject: [PATCH 113/238] Add extra version of py-more-itertools (#15042) --- var/spack/repos/builtin/packages/py-more-itertools/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-more-itertools/package.py b/var/spack/repos/builtin/packages/py-more-itertools/package.py index 57c684585e6..7d1386402a9 100644 --- a/var/spack/repos/builtin/packages/py-more-itertools/package.py +++ b/var/spack/repos/builtin/packages/py-more-itertools/package.py @@ -15,6 +15,7 @@ class PyMoreItertools(PythonPackage): import_modules = ['more_itertools', 'more_itertools.tests'] version('7.2.0', sha256='409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832') + version('5.0.0', sha256='38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4') version('4.3.0', sha256='c476b5d3a34e12d40130bc2f935028b5f636df8f372dc2c1c01dc19681b2039e') version('4.1.0', sha256='c9ce7eccdcb901a2c75d326ea134e0886abfbea5f93e91cc95de9507c0816c44') version('2.2', sha256='93e62e05c7ad3da1a233def6731e8285156701e3419a5fe279017c429ec67ce0') From 0ec908cd139c3a1fd3bd6b60aceeb83b62878291 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:38:00 +0100 Subject: [PATCH 114/238] Fix allowed python versions of py-tables (#14073) * Fix allowed python versions of py-tables * Update package.py * Update package.py * I think I've finally got it * Update package.py * Update package.py * Update package.py --- var/spack/repos/builtin/packages/py-tables/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-tables/package.py b/var/spack/repos/builtin/packages/py-tables/package.py index 8de84b43229..8af4809b49f 100644 --- a/var/spack/repos/builtin/packages/py-tables/package.py +++ b/var/spack/repos/builtin/packages/py-tables/package.py @@ -29,8 +29,10 @@ class PyTables(PythonPackage): variant('lzo', default=False, description='Support for lzo compression') # requirements.txt - depends_on('python@3.5:', when='@3.4:', type=('build', 'run')) + depends_on('python@3.5:', when='@3.6.1:', type=('build', 'run')) + depends_on('python@3.4:', when='@3.6.0:', type=('build', 'run')) depends_on('python@2.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') depends_on('py-cython@0.21:', type='build') depends_on('py-numpy@1.9.3:', type=('build', 'run')) From 1f54627cee94db7527a2d183e559a1df79e54943 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:49:46 +0100 Subject: [PATCH 115/238] Add extra version of py-logilab-common (#14997) * Add extra version of py-logilab-common * Update package.py * Update var/spack/repos/builtin/packages/py-logilab-common/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- .../repos/builtin/packages/py-logilab-common/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-logilab-common/package.py b/var/spack/repos/builtin/packages/py-logilab-common/package.py index 6dd556f1c39..ad558923410 100644 --- a/var/spack/repos/builtin/packages/py-logilab-common/package.py +++ b/var/spack/repos/builtin/packages/py-logilab-common/package.py @@ -11,8 +11,11 @@ class PyLogilabCommon(PythonPackage): homepage = "https://www.logilab.org/project/logilab-common" url = "https://pypi.io/packages/source/l/logilab-common/logilab-common-1.2.0.tar.gz" + version('1.4.2', sha256='cdda9ed0deca7c68f87f7a404ad742e47aaa1ca5956d12988236a5ec3bda13a0') version('1.2.0', sha256='d4e5cec3be3a89f06ff05e359a221e69bd1da33cb7096cad648ddcccea8465b7') extends('python', ignore=r'bin/pytest') - depends_on("py-setuptools", type='build') - depends_on("py-six", type=('build', 'run')) + depends_on("py-setuptools", type=('build', 'run')) + depends_on("py-six@1.4.0:", type=('build', 'run')) + depends_on("py-unittest2@0.5.1:", type=('build', 'run'), when='^python@:2.7') + depends_on("py-pytz", type='test') From db9ccc21b0c10fefff82e0cd0d4fa3b5d145ff01 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:50:19 +0100 Subject: [PATCH 116/238] Add extra version of py-defusedxml (#14972) * Add extra version of py-defusedxml * Update package.py * Update var/spack/repos/builtin/packages/py-defusedxml/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/py-defusedxml/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-defusedxml/package.py b/var/spack/repos/builtin/packages/py-defusedxml/package.py index 659d458ba5f..0b8261f6e5b 100644 --- a/var/spack/repos/builtin/packages/py-defusedxml/package.py +++ b/var/spack/repos/builtin/packages/py-defusedxml/package.py @@ -12,6 +12,8 @@ class PyDefusedxml(PythonPackage): homepage = "https://github.com/tiran/defusedxml" url = "https://pypi.io/packages/source/d/defusedxml/defusedxml-0.5.0.tar.gz" + version('0.6.0', sha256='f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5') version('0.5.0', sha256='24d7f2f94f7f3cb6061acb215685e5125fbcdc40a857eff9de22518820b0a4f4') depends_on('py-setuptools', type='build') + depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) From 74018df67802eef638180315139a8a71f7d4c036 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:55:47 +0100 Subject: [PATCH 117/238] Add extra version of py-ipywidgets (#14987) * Add extra version of py-ipywidgets * Update var/spack/repos/builtin/packages/py-ipywidgets/package.py Co-Authored-By: Adam J. Stewart * Update package.py * Update var/spack/repos/builtin/packages/py-ipywidgets/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-ipywidgets/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-ipywidgets/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-ipywidgets/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-ipywidgets/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-ipywidgets/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- .../repos/builtin/packages/py-ipywidgets/package.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-ipywidgets/package.py b/var/spack/repos/builtin/packages/py-ipywidgets/package.py index e8a8bfa2589..5f211e977bf 100644 --- a/var/spack/repos/builtin/packages/py-ipywidgets/package.py +++ b/var/spack/repos/builtin/packages/py-ipywidgets/package.py @@ -12,9 +12,17 @@ class PyIpywidgets(PythonPackage): homepage = "https://github.com/ipython/ipywidgets" url = "https://github.com/ipython/ipywidgets/archive/5.2.2.tar.gz" + version('7.4.2', sha256='f156165e8a855ed862fdf48e72700bdcd6956d089a2018c5b36d358255d45b2b') version('5.2.2', sha256='d61ab8bb12b90981a3a6010429816d70eaa041e622043207bcb74239b664d4f3') - depends_on('python@2.7:2.8,3.3:') - depends_on('py-ipython@4.0.0:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.3:', type=('build', 'run')) + depends_on('py-ipython@4:', type=('build', 'run')) + depends_on('py-ipython@4:5', type=('build', 'run'), when='^python@:3.2') depends_on('py-ipykernel@4.2.2:', type=('build', 'run')) + depends_on('py-ipykernel@4.5.1:', type=('build', 'run'), when='@6:') depends_on('py-traitlets@4.2.1:', type=('build', 'run')) + depends_on('py-traitlets@4.3.1:', type=('build', 'run'), when='@6:') + depends_on('py-nbformat@4.2.0:', type=('build', 'run'), when='@6:') + depends_on('py-widgetsnbextension@3.4.0:3.4.999', type=('build', 'run'), when='@6:') + depends_on('py-mock', type='test', when='^python@2.7:2.8') + depends_on('py-nose', type='test') From 5b2d1a6a5476462c190b4c9ffe8819a586d6701a Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:57:08 +0100 Subject: [PATCH 118/238] Add extra version of py-pexpect (#15050) * Add extra version of py-pexpect * Update package.py Update dependency version --- var/spack/repos/builtin/packages/py-pexpect/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-pexpect/package.py b/var/spack/repos/builtin/packages/py-pexpect/package.py index fd5d7d5d963..174edadffc9 100644 --- a/var/spack/repos/builtin/packages/py-pexpect/package.py +++ b/var/spack/repos/builtin/packages/py-pexpect/package.py @@ -11,8 +11,10 @@ class PyPexpect(PythonPackage): homepage = "https://pypi.python.org/pypi/pexpect" url = "https://pypi.io/packages/source/p/pexpect/pexpect-4.2.1.tar.gz" + version('4.7.0', sha256='9e2c1fd0e6ee3a49b28f95d4b33bc389c89b20af6a1255906e90ff1262ce62eb') version('4.6.0', sha256='2a8e88259839571d1251d278476f3eec5db26deb73a70be5ed5dc5435e418aba') version('4.2.1', sha256='3d132465a75b57aa818341c6521392a06cc660feb3988d7f1074f39bd23c9a92') version('3.3', sha256='dfea618d43e83cfff21504f18f98019ba520f330e4142e5185ef7c73527de5ba') depends_on('py-ptyprocess', type=('build', 'run')) + depends_on('py-ptyprocess@0.5:', type=('build', 'run'), when='@4.7.0:') From c8c53cc7e76e399c3b02c9a194cc9c2b422bb0a2 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:57:39 +0100 Subject: [PATCH 119/238] Add extra version of py-pbr (#15049) --- var/spack/repos/builtin/packages/py-pbr/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pbr/package.py b/var/spack/repos/builtin/packages/py-pbr/package.py index ae5661c37f7..80abed9db01 100644 --- a/var/spack/repos/builtin/packages/py-pbr/package.py +++ b/var/spack/repos/builtin/packages/py-pbr/package.py @@ -14,6 +14,7 @@ class PyPbr(PythonPackage): url = "https://pypi.io/packages/source/p/pbr/pbr-5.4.3.tar.gz" version('5.4.3', sha256='2c8e420cd4ed4cec4e7999ee47409e876af575d4c35a45840d59e8b5f3155ab8') + version('5.2.1', sha256='93d2dc6ee0c9af4dbc70bc1251d0e545a9910ca8863774761f92716dece400b6') version('3.1.1', sha256='05f61c71aaefc02d8e37c0a3eeb9815ff526ea28b3b76324769e6158d7f95be1') version('2.0.0', sha256='0ccd2db529afd070df815b1521f01401d43de03941170f8a800e7531faba265d') version('1.10.0', sha256='186428c270309e6fdfe2d5ab0949ab21ae5f7dea831eab96701b86bd666af39c') From e488b36d59ceb12c5aa559c78c8bddf9a2da37f4 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:58:45 +0100 Subject: [PATCH 120/238] Add extra version of py-pathlib2 (#15048) --- var/spack/repos/builtin/packages/py-pathlib2/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pathlib2/package.py b/var/spack/repos/builtin/packages/py-pathlib2/package.py index b1759bb1888..5da1abbe186 100644 --- a/var/spack/repos/builtin/packages/py-pathlib2/package.py +++ b/var/spack/repos/builtin/packages/py-pathlib2/package.py @@ -14,6 +14,7 @@ class PyPathlib2(PythonPackage): import_modules = ['pathlib2'] + version('2.3.3', sha256='25199318e8cc3c25dcb45cbe084cc061051336d5a9ea2a12448d3d8cb748f742') version('2.3.2', sha256='8eb170f8d0d61825e09a95b38be068299ddeda82f35e96c3301a8a5e7604cb83') version('2.1.0', sha256='deb3a960c1d55868dfbcac98432358b92ba89d95029cddd4040db1f27405055c') From 4bca09cc89af1e182f07f82c9bd5d663a8a47c9b Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 18:59:10 +0100 Subject: [PATCH 121/238] Add extra version of py-nbconvert (#15044) --- var/spack/repos/builtin/packages/py-nbconvert/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-nbconvert/package.py b/var/spack/repos/builtin/packages/py-nbconvert/package.py index 419deb7b1cd..3419f14a176 100644 --- a/var/spack/repos/builtin/packages/py-nbconvert/package.py +++ b/var/spack/repos/builtin/packages/py-nbconvert/package.py @@ -14,6 +14,7 @@ class PyNbconvert(PythonPackage): url = "https://github.com/jupyter/nbconvert/archive/4.2.0.tar.gz" version('5.6.0', sha256='21a69fe5756a3af8e76dcc105217cc3bea4d8f23dbff5727d9fd1e4388b53beb') + version('5.5.0', sha256='93721d772361d1cd59502dacfb76c4122359b1c321cea1882451532a2db02d59') version('4.2.0', sha256='32394be5a20f39f99fabfb9b2f2625df17f1c2a6699182ca41598e98e7cc9610') version('4.1.0', sha256='459f23381411fd1ff9ec5ed71fcd56b8c080d97b3a1e47dae1c5c391f9a47266') version('4.0.0', sha256='00e25eeca90523ba6b774b289073631ef5ac65bb2de9774e9b7f29604516265c') From c77b6923b8ced8212a734c6ded26579ddaabad9c Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 18 Feb 2020 19:00:01 +0100 Subject: [PATCH 122/238] npm: Add 6.13.7 (#15034) --- var/spack/repos/builtin/packages/npm/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/npm/package.py b/var/spack/repos/builtin/packages/npm/package.py index 91b43454841..43be2a20017 100644 --- a/var/spack/repos/builtin/packages/npm/package.py +++ b/var/spack/repos/builtin/packages/npm/package.py @@ -16,6 +16,7 @@ class Npm(Package): # base http://www.npmjs.com/ url = "https://registry.npmjs.org/npm/-/npm-6.13.4.tgz" + version('6.13.7', sha256='6adf71c198d61a5790cf0e057f4ab72c6ef6c345d72bed8bb7212cb9db969494') version('6.13.4', sha256='a063290bd5fa06a8753de14169b7b243750432f42d01213fbd699e6b85916de7') version('3.10.9', sha256='fb0871b1aebf4b74717a72289fade356aedca83ee54e7386e38cb51874501dd6') version('3.10.5', sha256='ff019769e186152098841c1fa6325e5a79f7903a45f13bd0046a4dc8e63f845f') @@ -37,8 +38,8 @@ class Npm(Package): def patch(self): shutil.rmtree('node_modules/node-gyp') install_tree('node-gyp/package', 'node_modules/node-gyp') - filter_file('"node-gyp": "^5.0.5"', '"node-gyp": "^6.0.1"', - 'package.json', string=True) + filter_file(r'"node-gyp": "\^5\..*"', '"node-gyp": "^6.0.1"', + 'package.json') install_tree('env-paths/package', 'node_modules/env-paths') def configure(self, spec, prefix): From c0bae73d2fee2058a372b53f8b93efb22d040ab5 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 19:56:18 +0100 Subject: [PATCH 123/238] Add extra version of py-graphviz (#14981) * Add extra version of py-graphviz * Update package.py * Update package.py * Update var/spack/repos/builtin/packages/py-graphviz/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/py-graphviz/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-graphviz/package.py b/var/spack/repos/builtin/packages/py-graphviz/package.py index da4fbe17b04..9fcbd1c5560 100644 --- a/var/spack/repos/builtin/packages/py-graphviz/package.py +++ b/var/spack/repos/builtin/packages/py-graphviz/package.py @@ -13,12 +13,14 @@ class PyGraphviz(PythonPackage): homepage = "https://github.com/xflr6/graphviz" url = "https://pypi.io/packages/source/g/graphviz/graphviz-0.10.1.zip" + version('0.11.1', sha256='914b8b124942d82e3e1dcef499c9fe77c10acd3d18a1cfeeb2b9de05f6d24805') version('0.10.1', sha256='d311be4fddfe832a56986ac5e1d6e8715d7fcb0208560da79d1bb0f72abef41f') variant('dev', default=False, description='development mode') variant('docs', default=False, description='build documentation') - depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:', type=('build', 'run'), when='@:0.10.1') + depends_on('python@2.7:2.8,3.5:', type=('build', 'run'), when='@0.11.0:') depends_on('py-setuptools', type='build') depends_on('py-tox@3.0:', type=('build', 'run'), when='+dev') depends_on('py-flake8', type=('build', 'run'), when='+dev') @@ -27,6 +29,7 @@ class PyGraphviz(PythonPackage): depends_on('py-twine', type=('build', 'run'), when='+dev') depends_on('py-mock@2:', type='test') depends_on('py-pytest@3.4:', type='test') + depends_on('py-pytest@3.4:3.9,3.11:', when='@0.11.1', type='test') depends_on('py-pytest-mock@1.8:', type='test') depends_on('py-pytest-cov', type='test') depends_on('py-sphinx@1.7:', type=('build', 'run'), when='+docs') From 975acd4dfb6173e13922ce1599b8a20fb6b7dda8 Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Tue, 18 Feb 2020 21:21:46 +0100 Subject: [PATCH 124/238] py-hpcbench: new package (#14915) * py-hpcbench: new package * obey the flake8 * address comments, fix versions. * Update var/spack/repos/builtin/packages/py-hpcbench/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- .../builtin/packages/py-hpcbench/package.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-hpcbench/package.py diff --git a/var/spack/repos/builtin/packages/py-hpcbench/package.py b/var/spack/repos/builtin/packages/py-hpcbench/package.py new file mode 100644 index 00000000000..7721655824a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-hpcbench/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 PyHpcbench(PythonPackage): + """Define and run your benchmarks""" + + homepage = "https://github.com/BlueBrain/hpcbench" + + url = "https://pypi.io/packages/source/h/hpcbench/hpcbench-0.8.tar.gz" + git = "https://github.com/BlueBrain/hpcbench.git" + + version('master', branch='master') + version('0.8', sha256='120f5b1e6ff05a944b34a910f3099b4b0f50e96c60cf550b8fc6c42f64194697') + + depends_on('py-setuptools', type='build') + depends_on('py-setuptools-scm@1.15.6', type='build') + depends_on('py-cached-property@1.3.1:', type=('build', 'run')) + depends_on('py-clustershell@1.8:', type=('build', 'run')) + depends_on('py-cookiecutter@1.6.0', type=('build', 'run')) + depends_on('py-docopt@0.6.2', type=('build', 'run')) + depends_on('py-elasticsearch@6:6.999', type=('build', 'run')) + depends_on('py-jinja2@2.10', type=('build', 'run')) + depends_on('py-mock@2.0.0', type=('build', 'run')) + depends_on('py-numpy@1.13.3', type=('build', 'run')) + depends_on('py-pyyaml@3.12:', type=('build', 'run')) + depends_on('py-python-magic@0.4.15', type=('build', 'run')) + depends_on('py-six@1.11', type=('build', 'run')) From 893f76da53f2ca53fc18f3a08e370b4dfd80ebb4 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Tue, 18 Feb 2020 15:23:54 -0500 Subject: [PATCH 125/238] Fix OpenBLAS 0.3.8 build on darwin (#15041) * Fix OpenBLAS 0.3.8 build on darwin See https://github.com/xianyi/OpenBLAS/issues/2431, patched in https://github.com/xianyi/OpenBLAS/issues/2431 . * Add references for patchfile --- .../openblas/openblas-0.3.8-darwin.patch | 23 +++++++++++++++++++ .../builtin/packages/openblas/package.py | 4 ++++ 2 files changed, 27 insertions(+) create mode 100644 var/spack/repos/builtin/packages/openblas/openblas-0.3.8-darwin.patch diff --git a/var/spack/repos/builtin/packages/openblas/openblas-0.3.8-darwin.patch b/var/spack/repos/builtin/packages/openblas/openblas-0.3.8-darwin.patch new file mode 100644 index 00000000000..e844e0be245 --- /dev/null +++ b/var/spack/repos/builtin/packages/openblas/openblas-0.3.8-darwin.patch @@ -0,0 +1,23 @@ +diff --git a/c_check b/c_check +index fbd1838a..e10def2e 100644 +--- a/c_check ++++ b/c_check +@@ -263,18 +263,6 @@ if ($architecture ne $hostarch) { + + $cross = 1 if ($os ne $hostos); + +-# rework cross suffix and architecture if we are on OSX cross-compiling for ARMV8-based IOS +-# the initial autodetection will have been confused by the command-line arguments to clang +-# and the cross-compiler apparently still claims to build for x86_64 in its CC -E output +-if (($os eq "Darwin") && ($cross_suffix ne "")) { +- my $tmpnam = `xcrun --sdk iphoneos --find clang`; +- $cross_suffix = substr($tmpnam, 0, rindex($tmpnam, "/")+1 ); +-# this should produce something like $cross_suffix="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/"; +- $cross =1; +- $architecture = arm64; +-} +- +- + + $openmp = "" if $ENV{USE_OPENMP} != 1; + diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 607a41e85d5..0ad58605c4c 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -86,6 +86,10 @@ class Openblas(MakefilePackage): sha256='f1b066a4481a50678caeb7656bf3e6764f45619686ac465f257c8017a2dc1ff0', when='@0.3.0:0.3.3') + # Fix https://github.com/xianyi/OpenBLAS/issues/2431 + # Patch derived from https://github.com/xianyi/OpenBLAS/pull/2424 + patch('openblas-0.3.8-darwin.patch', when='@0.3.8 platform=darwin') + # Add conditions to f_check to determine the Fujitsu compiler patch('openblas_fujitsu.patch', when='%fj') From 813bfcfcbd073cc2d4e7ec0405340c7016b93437 Mon Sep 17 00:00:00 2001 From: "Elsa Gonsiorowski, PhD" Date: Tue, 18 Feb 2020 12:25:37 -0800 Subject: [PATCH 126/238] ROSS: v7.2.0 and branches to match (#15052) --- var/spack/repos/builtin/packages/ross/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ross/package.py b/var/spack/repos/builtin/packages/ross/package.py index cfdca271611..7c33fef84a4 100644 --- a/var/spack/repos/builtin/packages/ross/package.py +++ b/var/spack/repos/builtin/packages/ross/package.py @@ -13,7 +13,11 @@ class Ross(CMakePackage): git = "https://github.com/ROSS-org/ROSS.git" url = "https://github.com/ROSS-org/ROSS/archive/v7.0.0.tar.gz" - version('develop', branch='master') + version('develop', branch='develop') + version('master', branch='master') + version('7.2.0', sha256='c937f4c7baa1918b6cd08f4eafae8cab44eddcd4aaa1175c23ff8562583ad726') + version('7.1.1', sha256='550e3288cefedcbc7e6ca16cfbee0477b70399d63e94f554b60b32d714029722') + version('7.1.0', sha256='478063f36d96466faef3db3cc15e1c0e1a8b60b9152fcce0eedf367be8252733') version('7.0.1', sha256='40780dada4ab501d2b8ea229f70b9fea920404431d7a60081ba84dd4a50b2517') version('7.0.0', sha256='fd16be2c86d9d71ae64eef67c02933471ab758c8a5b01b04fe358d9228fc581e') version('6.0.0', sha256='07ff70518a58503e116bb7386f490e901212798afdd471da1bcd34f78a7e6030') From 53238af2dca54d2269f2494f6c41678b15896f75 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 18 Feb 2020 21:26:02 +0100 Subject: [PATCH 127/238] Add extra version of py-cryptography (#14975) * Add extra version of py-cryptography * Update package.py * Update package.py * Update var/spack/repos/builtin/packages/py-cryptography/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-cryptography/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-cryptography/package.py Co-Authored-By: Adam J. Stewart * Update package.py * Flake-8 Co-authored-by: Adam J. Stewart --- .../builtin/packages/py-cryptography/package.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-cryptography/package.py b/var/spack/repos/builtin/packages/py-cryptography/package.py index ad6ac9d2d00..ee433a9d879 100644 --- a/var/spack/repos/builtin/packages/py-cryptography/package.py +++ b/var/spack/repos/builtin/packages/py-cryptography/package.py @@ -11,18 +11,29 @@ class PyCryptography(PythonPackage): """cryptography is a package which provides cryptographic recipes and primitives to Python developers""" - homepage = "https://pypi.python.org/pypi/cryptography" + homepage = "https://github.com/pyca/cryptography" url = "https://pypi.io/packages/source/c/cryptography/cryptography-1.8.1.tar.gz" + version('2.7', sha256='e6347742ac8f35ded4a46ff835c60e68c22a536a8ae5c4422966d06946b6d4c6') version('2.3.1', sha256='8d10113ca826a4c29d5b85b2c4e045ffa8bad74fb525ee0eceb1d38d4c70dfd6') version('1.8.1', sha256='323524312bb467565ebca7e50c8ae5e9674e544951d28a2904a50012a8828190') + variant('idna', default=False, description='Deprecated U-label support') + conflicts('+idna', when='@:2.4') + # dependencies taken from https://github.com/pyca/cryptography/blob/master/setup.py + depends_on('python@2.6:2.8,3.4:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:', when='@2.3.1:', type=('build', 'run')) + depends_on('py-setuptools@20.5:', type='build') - depends_on('py-cffi@1.4.1:', type=('build', 'run')) + + depends_on('py-cffi@1.4.1:', type=('build', 'run')) + depends_on('py-cffi@1.8:1.11.2,1.11.4:', type=('build', 'run'), when='@2.7:') + depends_on('py-asn1crypto@0.21.0:', type=('build', 'run')) depends_on('py-six@1.4.1:', type=('build', 'run')) - depends_on('py-idna@2.1:', type=('build', 'run')) + depends_on('py-idna@2.1:', type=('build', 'run'), when='@:2.4') # deprecated + depends_on('py-idna@2.1:', type=('build', 'run'), when='@2.5: +idna') # deprecated depends_on('py-enum34', type=('build', 'run'), when='^python@:3.4') depends_on('py-ipaddress', type=('build', 'run'), when='^python@:3.3') depends_on('openssl@:1.0', when='@:1.8.1') From 6f95967e95570ce6aa0c710abd3e2b522655a85e Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Tue, 18 Feb 2020 15:49:55 -0600 Subject: [PATCH 128/238] buildcache: Check for tar.bz2 and set tar.gz if not found (#15054) * Check for tar.bz2 and set tar.gz if not found * Move check for tarfile after it is extracted --- lib/spack/spack/binary_distribution.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index 49f8416d6f8..9991a669657 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -596,6 +596,10 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False, with closing(tarfile.open(spackfile_path, 'r')) as tar: tar.extractall(tmpdir) + # older buildcache tarfiles use gzip compression + if not os.path.exists(tarfile_path): + tarfile_name = tarball_name(spec, '.tar.gz') + tarfile_path = os.path.join(tmpdir, tarfile_name) if not unsigned: if os.path.exists('%s.asc' % specfile_path): try: From 3ee0295fb29e08870e04f849de961266f95e9fea Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Tue, 18 Feb 2020 15:59:09 -0600 Subject: [PATCH 129/238] Update and simplify julia package (#14756) * Update and simplify julia package The current Spack Julia package potentially installs a few julia packages, with the installation being controlled by variants. There are a couple of problems with this. First, Julia handles packages very differently from systems such as R and Python. Julia requires write access to the repository directories in order for user installs of packages to work. If spack installs julia packages then there will be a repository, DEPOT_PATH, in the installation directory. If spack is used on an individual basis this would work but would mean that package data is written to the spack installation directory after installation. If spack is used to provide packages for end users then user installs of julia packages will fail due to lack of write access to the repository in the installation directory. It seems best for spack to just install julia without any julia packages, and drop the configuration for those packages. Second, having spack install package as variants seems to be counter to how spack works for other extendable systems, like R and Python. Julia should be an extendable package in spack but it is not clear how to make that work. As pointed out above, installing user packages requires write access to the julia repositories, including the one in the install directory. Essentially, a user package installation will try to update metadata for *all* julia repositories. Furthermore, each of those repositories, assuming one per package with spack, would need to have the Project.toml files merged to present the package stack to julia. Again, it seems best for spack to just install julia itself and not try to install julia packages, at least at this time. A good discussion on this can be found at https://discourse.julialang.org/t/how-does-one-set-up-a-centralized-julia-installation/13922. This PR does the following: - adds versions 1.2.0 and 1.3.1 - removes variants that correspond to julia packages - changes python to build dependency as it seems to only be needed for LLVM - the new versions can use Python-3 - removes dependencies for packages - adds a conflict statement for Intel compiler, with comment - add a setup_build_environment method to find GCC libraries - make formatting consistent - adds JULIA_CPU_TARGET option to correspond with target to help with running julia image on hardware older than build host - added intel build options, for when they can be used - removed code for installing packages - removed code for julia config that was needed for packages Note that versions below 0.5.1 fail to build, with or without these changes. It is not clear why that is. * Update var/spack/repos/builtin/packages/julia/package.py Yes, need to use correct grammar even in the midst of numbers and symbols. Good catch! Co-Authored-By: Adam J. Stewart * More cleanup of Julia package This commit does more cleanup and sets more constraints. - Removed release-0.4 and release-0.5. I am not sure if those are actually useful but they are quite old and there are released versions from the same timeframe. - Remove the binutils variant. - Made cmake a build dependency for versions >= 1. - Added git as a dependency for @master. - Limit curl dependency to released versions. - Do not use external curl for master. When I checked, using the external version failed but the internal curl worked. - Versions <= 0.5.0 need an older version of openssl. - Set conflicts directive for cxx variant. - Added conflicts directive for needing +mkl with Intel compiler. - Removed configuration settings as these prevented julia from working properly in all cases that I looked at. * Fix flake8 error Remove 'import sys' that is no longer used. * More dependency tweaks This commit sets further version constraints on dependencies. It really looks like julia requires its internal dependencies more over time. - curl only up to 0.5.0 - openssl only up to 0.5.0 - override with system curl up to version 0.5.0 * Fix spec for curl certs Only depending on curl through 0.5.0. Co-authored-by: Adam J. Stewart --- .../repos/builtin/packages/julia/package.py | 278 +++++++----------- 1 file changed, 104 insertions(+), 174 deletions(-) diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index a056d405584..9dae676d9af 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -6,7 +6,6 @@ from spack import * import os -import sys class Julia(Package): @@ -16,62 +15,55 @@ class Julia(Package): url = "https://github.com/JuliaLang/julia/releases/download/v0.4.3/julia-0.4.3-full.tar.gz" git = "https://github.com/JuliaLang/julia.git" + maintainers = ['glennpj'] + version('master', branch='master') - version('1.1.1', sha256='3c5395dd3419ebb82d57bcc49dc729df3b225b9094e74376f8c649ee35ed79c2') + version('1.3.1', sha256='053908ec2706eb76cfdc998c077de123ecb1c60c945b4b5057aa3be19147b723') + version('1.2.0', sha256='2419b268fc5c3666dd9aeb554815fe7cf9e0e7265bc9b94a43957c31a68d9184') + version('1.1.1', sha256='3c5395dd3419ebb82d57bcc49dc729df3b225b9094e74376f8c649ee35ed79c2') version('1.0.0', sha256='1a2497977b1d43bb821a5b7475b4054b29938baae8170881c6b8dd4099d133f1') version('0.6.2', sha256='1e34c13091c9ddb47cf87a51566d94a06613f3db3c483b8f63b276e416dd621b') - version('release-0.5', branch='release-0.5') version('0.5.2', sha256='f5ef56d79ed55eacba9fe968bb175317be3f61668ef93e747d76607678cc01dd') version('0.5.1', sha256='533b6427a1b01bd38ea0601f58a32d15bf403f491b8415e9ce4305b8bc83bb21') version('0.5.0', sha256='732478536b6dccecbf56e541eef0aed04de0e6d63ae631b136e033dda2e418a9') - version('release-0.4', branch='release-0.4') version('0.4.7', sha256='d658d5bd5fb79b19f3c01cadb9aba8622ca8a12a4b687acc7d99c21413623570') version('0.4.6', sha256='4c23c9fc72398014bd39327c2f7efd3a301884567d4cb2a89105c984d4d633ba') version('0.4.5', sha256='cbf361c23a77e7647040e8070371691083e92aa93c8a318afcc495ad1c3a71d9') version('0.4.3', sha256='2b9df25a8f58df8e43038ec30bae195dfb160abdf925f3fa193b59d40e4113c5') - # TODO: Split these out into jl-hdf5, jl-mpi packages etc. - variant("cxx", default=False, description="Prepare for Julia Cxx package") - variant("hdf5", default=False, description="Install Julia HDF5 package") - variant("mpi", default=True, description="Install Julia MPI package") - variant("plot", default=False, - description="Install Julia plotting packages") - variant("python", default=False, - description="Install Julia Python package") - variant("simd", default=False, description="Install Julia SIMD package") - variant("mkl", default=False, description="Use Intel MKL") + variant('cxx', default=False, description='Prepare for Julia Cxx package') + variant('mkl', default=False, description='Use Intel MKL') patch('gc.patch', when='@0.4:0.4.5') patch('openblas.patch', when='@0.4:0.4.5') patch('armgcc.patch', when='@1.0.0:1.1.1 %gcc@:5.9 target=aarch64:') - variant('binutils', default=sys.platform != 'darwin', - description="Build via binutils") - # Build-time dependencies: - # depends_on("awk") - depends_on("m4", type="build") - # depends_on("pkgconfig") + # depends_on('awk') + depends_on('m4', type='build') + # depends_on('pkgconfig') + # Python only needed to build LLVM? + depends_on('python@2.7:2.8', type='build', when='@:1.1') + depends_on('python@2.7:', type='build', when='@1.2:') + depends_on('cmake @2.8:', type='build', when='@1.0:') + depends_on('git', type='build', when='@master') # Combined build-time and run-time dependencies: # (Yes, these are run-time dependencies used by Julia's package manager.) - depends_on("binutils", when='+binutils') - depends_on("cmake @2.8:") - depends_on("curl") - depends_on("git", when='@:0.4') - depends_on("git", when='@release-0.4') - depends_on("openssl") - depends_on("python@2.7:2.8") - depends_on("mkl", when='+mkl') + depends_on('cmake @2.8:', type=('build', 'run'), when='@:0.6') + depends_on('curl', when='@:0.5.0') + depends_on('git', type=('build', 'run'), when='@:0.4') + depends_on('openssl@:1.0', when='@:0.5.0') + depends_on('mkl', when='+mkl') # Run-time dependencies: - # depends_on("arpack") - # depends_on("fftw +float") - # depends_on("gmp") - # depends_on("libgit") - # depends_on("mpfr") - # depends_on("openblas") - # depends_on("pcre2") + # depends_on('arpack') + # depends_on('fftw +float') + # depends_on('gmp') + # depends_on('libgit') + # depends_on('mpfr') + # depends_on('openblas') + # depends_on('pcre2') # ARPACK: Requires BLAS and LAPACK; needs to use the same version # as Julia. @@ -97,162 +89,100 @@ class Julia(Package): # USE_SYSTEM_UTF8PROC=0 # USE_SYSTEM_LIBGIT2=0 - # Run-time dependencies for Julia packages: - depends_on("hdf5", when="+hdf5", type="run") - depends_on("mpi", when="+mpi", type="run") - depends_on("py-matplotlib", when="+plot", type="run") + conflicts('+cxx', when='@:0.6', msg='Variant cxx requires Julia >= 1.0.0') - conflicts("@:0.7.0", when="target=aarch64:") + conflicts('@:0.7.0', when='target=aarch64:') + + # GCC conflicts + conflicts('@:0.5.1', when='%gcc@8:', msg='Julia <= 0.5.1 needs GCC <= 7') + + # Building recent versions of Julia with Intel is untested and unsupported + # by the Julia project, https://github.com/JuliaLang/julia/issues/23407. + conflicts('@0.6:', when='%intel', + msg='Only Julia <= 0.5.x can be built with the Intel compiler.') + conflicts('%intel', when='~mkl', + msg='Building with the Intel compiler requires the mkl variant ' + '(+mkl)') + + def setup_build_environment(self, env): + # The julia build can have trouble with finding GCC libraries with the + # spack compiler. + if self.compiler.name == 'gcc': + gcc_base = os.path.split(os.path.split(self.compiler.cc)[0])[0] + env.prepend_path('LD_LIBRARY_PATH', join_path(gcc_base, 'lib64')) def install(self, spec, prefix): # Julia needs git tags - if os.path.isfile(".git/shallow"): - git = which("git") - git("fetch", "--unshallow") + if os.path.isfile('.git/shallow'): + git = which('git') + git('fetch', '--unshallow') # Explicitly setting CC, CXX, or FC breaks building libuv, one # of Julia's dependencies. This might be a Darwin-specific # problem. Given how Spack sets up compilers, Julia should # still use Spack's compilers, even if we don't specify them - # explicitly. + # explicitly. Potential options are + # 'CC=cc', + # 'CXX=c++', + # 'FC=fc', + # 'USE_SYSTEM_ARPACK=1', + # 'override USE_SYSTEM_CURL=1', + # 'USE_SYSTEM_FFTW=1', + # 'USE_SYSTEM_GMP=1', + # 'USE_SYSTEM_MPFR=1', + # 'USE_SYSTEM_PCRE=1', options = [ - # "CC=cc", - # "CXX=c++", - # "FC=fc", - # "USE_SYSTEM_ARPACK=1", - "override USE_SYSTEM_CURL=1", - # "USE_SYSTEM_FFTW=1", - # "USE_SYSTEM_GMP=1", - # "USE_SYSTEM_MPFR=1", - # "USE_SYSTEM_PCRE=1", - "prefix=%s" % prefix] - if "+cxx" in spec: - if "@master" not in spec: - raise InstallError( - "Variant +cxx requires the @master version of Julia") + 'prefix={0}'.format(prefix) + ] + if '@:0.5.0' in spec: options += [ - "BUILD_LLVM_CLANG=1", - "LLVM_ASSERTIONS=1", - "USE_LLVM_SHLIB=1"] + 'override USE_SYSTEM_CURL=1' + ] + + if '+cxx' in spec: + options += [ + 'BUILD_LLVM_CLANG=1', + 'LLVM_ASSERTIONS=1', + 'USE_LLVM_SHLIB=1' + ] if spec.target.family == 'aarch64': options += [ 'JULIA_CPU_TARGET=generic', - 'MARCH=armv8-a+crc'] + 'MARCH=armv8-a+crc' + ] + + if spec.target.family == 'x86_64' or spec.target.family == 'x86': + if spec.target == 'x86_64': + options += [ + 'JULIA_CPU_TARGET=generic' + ] + else: + options += [ + 'JULIA_CPU_TARGET={0}'.format(spec.target) + ] + + if '%intel' in spec: + options += [ + 'USEICC=1', + 'USEIFC=1', + 'USE_INTEL_LIBM=1' + ] + if '+mkl' in spec: options += [ - 'USE_INTEL_MKL=1'] + 'USE_INTEL_MKL=1', + ] with open('Make.user', 'w') as f: f.write('\n'.join(options) + '\n') + make() - make("install") + make('install') # Julia's package manager needs a certificate - cacert_dir = join_path(prefix, "etc", "curl") - mkdirp(cacert_dir) - cacert_file = join_path(cacert_dir, "cacert.pem") - curl = which("curl") - curl("--create-dirs", - "--output", cacert_file, - "https://curl.haxx.se/ca/cacert.pem") - - # Put Julia's compiler cache into a private directory - cachedir = join_path(prefix, "var", "julia", "cache") - mkdirp(cachedir) - - # Store Julia packages in a private directory - pkgdir = join_path(prefix, "var", "julia", "pkg") - mkdirp(pkgdir) - - # Configure Julia - if spec.satisfies('@master') or spec.satisfies("@0.7:"): - julia_config = 'startup.jl' - cache_path = 'DEPOT_PATH' - unshift = 'pushfirst!' - else: - julia_config = 'juliarc.jl' - cache_path = 'LOAD_CACHE_PATH' - unshift = 'unshift!' - with open(join_path(prefix, "etc", "julia", julia_config), - "a") as juliarc: - if "@master" in spec or "@release-0.5" in spec or "@0.5" in spec: - # This is required for versions @0.5: - juliarc.write( - '# Point package manager to working certificates\n') - if spec.satisfies('@master') or spec.satisfies('@0,7'): - juliarc.write('import LibGit2;') - juliarc.write('LibGit2.set_ssl_cert_locations("%s")\n' % - cacert_file) - juliarc.write('\n') - juliarc.write('# Put compiler cache into a private directory\n') - juliarc.write('empty!(Base.%s)\n' % cache_path) - juliarc.write('%s(Base.%s, "%s")\n' % - (unshift, cache_path, cachedir)) - juliarc.write('\n') - juliarc.write('# Put Julia packages into a private directory\n') - juliarc.write('ENV["JULIA_PKGDIR"] = "%s"\n' % pkgdir) - juliarc.write('\n') - - # Install some commonly used packages - julia = spec['julia'].command - if spec.satisfies("@:0.7"): - julia("-e", 'Pkg.init(); Pkg.update()') - pkgstart = '' - else: - pkgstart = 'import Pkg;' - - # Install HDF5 - if "+hdf5" in spec: - with open(join_path(prefix, "etc", "julia", julia_config), - "a") as juliarc: - juliarc.write('# HDF5\n') - juliarc.write('push!(Libdl.DL_LOAD_PATH, "%s")\n' % - spec["hdf5"].prefix.lib) - juliarc.write('\n') - julia("-e", pkgstart + 'Pkg.add("HDF5"); using HDF5') - julia("-e", pkgstart + 'Pkg.add("JLD"); using JLD') - - # Install MPI - if "+mpi" in spec: - with open(join_path(prefix, "etc", "julia", julia_config), - "a") as juliarc: - juliarc.write('# MPI\n') - juliarc.write('ENV["JULIA_MPI_C_COMPILER"] = "%s"\n' % - join_path(spec["mpi"].prefix.bin, "mpicc")) - juliarc.write('ENV["JULIA_MPI_Fortran_COMPILER"] = "%s"\n' % - join_path(spec["mpi"].prefix.bin, "mpifort")) - juliarc.write('\n') - julia("-e", pkgstart + 'Pkg.add("MPI"); using MPI') - - # Install Python - if "+python" in spec or "+plot" in spec: - with open(join_path(prefix, "etc", "julia", julia_config), - "a") as juliarc: - juliarc.write('# Python\n') - juliarc.write('ENV["PYTHON"] = "%s"\n' % spec["python"].home) - juliarc.write('\n') - # Python's OpenSSL package installer complains: - # Error: PREFIX too long: 166 characters, but only 128 allowed - # Error: post-link failed for: openssl-1.0.2g-0 - julia("-e", pkgstart + 'Pkg.add("PyCall"); using PyCall') - - if "+plot" in spec: - julia("-e", pkgstart + 'Pkg.add("PyPlot"); using PyPlot') - julia("-e", pkgstart + 'Pkg.add("Colors"); using Colors') - # These require maybe gtk and imagemagick - julia("-e", pkgstart + 'Pkg.add("Plots"); using Plots') - julia("-e", pkgstart + 'Pkg.add("PlotRecipes"); using PlotRecipes') - julia( - "-e", - pkgstart + 'Pkg.add("UnicodePlots"); using UnicodePlots' - ) - julia("-e", """\ -using Plots -using UnicodePlots -unicodeplots() -plot(x->sin(x)*cos(x), linspace(0, 2pi)) -""") - - # Install SIMD - if "+simd" in spec: - julia("-e", pkgstart + 'Pkg.add("SIMD"); using SIMD') - - julia("-e", pkgstart + 'Pkg.status()') + if '@:0.5.0' in spec: + cacert_dir = join_path(prefix, 'etc', 'curl') + mkdirp(cacert_dir) + cacert_file = join_path(cacert_dir, 'cacert.pem') + curl = which('curl') + curl('--create-dirs', + '--output', cacert_file, + 'https://curl.haxx.se/ca/cacert.pem') From 11340a332d87071a5549362fed629950dd7d9975 Mon Sep 17 00:00:00 2001 From: Hadrien G Date: Tue, 18 Feb 2020 23:04:59 +0100 Subject: [PATCH 130/238] [hepmc] Finish the HepMC3 spackage update (#15036) * Finish the HepMC3 spackage update - Update CMake requirement per latest master - Account for Python variant, add python dependency if used - Account for ROOT I/O variant, add ROOT dependency if used * Please flake8 --- var/spack/repos/builtin/packages/hepmc/package.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hepmc/package.py b/var/spack/repos/builtin/packages/hepmc/package.py index 74f11418426..2828a179ff1 100644 --- a/var/spack/repos/builtin/packages/hepmc/package.py +++ b/var/spack/repos/builtin/packages/hepmc/package.py @@ -26,12 +26,24 @@ class Hepmc(CMakePackage): version('2.06.06', sha256='8cdff26c10783ed4248220a84a43b7e1f9b59cc2c9a29bd634d024ca469db125') version('2.06.05', sha256='4c411077cc97522c03b74f973264b8d9fd2b6ccec0efc7ceced2645371c73618') - depends_on('cmake@2.6:', type='build') + variant('python', default=False, description='Enable Python bindings') + variant('rootio', default=False, description='Enable ROOT I/O') + + depends_on('cmake@2.8.9:', type='build') + # FIXME: Officially supports Python3, but the build system doesn't find it + depends_on('python@:2.99.99', when='+python') + depends_on('root', when='+rootio') + + conflicts('+python', when='@:3.1.99') + conflicts('+rootio', when='@:2.99.99') def cmake_args(self): + spec = self.spec return [ '-Dmomentum:STRING=GEV', '-Dlength:STRING=MM', + '-DHEPMC3_ENABLE_PYTHON={0}'.format(spec.satisfies('+python')), + '-DHEPMC3_ENABLE_ROOTIO={0}'.format(spec.satisfies('+rootio')) ] def url_for_version(self, version): From 0ea220db8389a08fc09ca1dd38e566d076261e36 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Tue, 18 Feb 2020 15:26:31 -0800 Subject: [PATCH 131/238] slate needs mercurial for build (#15055) --- var/spack/repos/builtin/packages/slate/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/slate/package.py b/var/spack/repos/builtin/packages/slate/package.py index f8b33d73726..67264d3bc92 100644 --- a/var/spack/repos/builtin/packages/slate/package.py +++ b/var/spack/repos/builtin/packages/slate/package.py @@ -27,6 +27,7 @@ class Slate(Package): depends_on('cuda@9:', when='+cuda') depends_on('intel-mkl') + depends_on('mercurial', type='build') depends_on('mpi', when='+mpi') conflicts('%gcc@:5') From a92543803c3f907151c83bb99e8d2a1a0adfd941 Mon Sep 17 00:00:00 2001 From: Tyler Reddy Date: Tue, 18 Feb 2020 22:48:24 -0700 Subject: [PATCH 132/238] ENH: add catch2 CMake install (#15008) * ENH: add catch2 CMake install * add a variant allowing catch2 to be installed via CMake, which is useful for generating a .cmake config file for consumption by other projects * Catch2: Simplify Package - CMake install is also single-header for new releases - testing triggered by Spack's test mechanism - default to CMake build (better than simple copy, which is just for old releases to be installed) * Catch: Remove Variant We can control all installs with CMake to be quick and complete. Old versions prior to 1.7.0 will be manually installed, as the `make install` target is missing in those. Releases 1.7.0-1.9.3 do not expose control over test builds. * openPMD-api: Catch Lost single_header ... variant is gone :) Co-authored-by: Axel Huebl --- .../repos/builtin/packages/catch2/package.py | 35 +++++++++++-------- .../builtin/packages/openpmd-api/package.py | 2 +- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/catch2/package.py b/var/spack/repos/builtin/packages/catch2/package.py index 367c93a2823..989c96f7fb6 100644 --- a/var/spack/repos/builtin/packages/catch2/package.py +++ b/var/spack/repos/builtin/packages/catch2/package.py @@ -12,14 +12,7 @@ class Catch2(CMakePackage): homepage = "https://github.com/catchorg/Catch2" url = "https://github.com/catchorg/Catch2/archive/v2.9.1.tar.gz" - - variant('single_header', default=True, - description='Install a single header only.') - - # - "make install" was added in 1.7.0 - # - pkg-config package was added in 2.0.1 - # - CMake config package was added in 2.1.2 - conflicts('~single_header', when='@:1.6.1') + maintainers = ['ax3l'] version('2.9.1', sha256='0b36488aca6265e7be14da2c2d0c748b4ddb9c70a1ea4da75736699c629f14ac') version('2.9.0', sha256='00040cad9b6d6bb817ebd5853ff6dda23f9957153d8c4eedf85def0c9e787c42') @@ -38,8 +31,10 @@ class Catch2(CMakePackage): version('2.2.3', sha256='45e5e12cc5a98e098b0960d70c0d99b7168b711e85fb947dcd4d68ec3f8b8826') version('2.2.2', sha256='e93aacf012579093fe6b4e686ff0488975cabee1e6b4e4f27a0acd898e8f09fd') version('2.2.1', sha256='3938bc896f8de570bc56d25606fc128437ee53590a95cf3e005710176a1a1ce4') + # releases 2.1.2+ added a CMake config package version('2.1.0', sha256='a8f9805174916c23bf59ed45f72c21ce092e2848c139f4c6d396aeeb5ce2dfb3') version('2.0.1', sha256='5f31b93712e65d363f257ad0f0c02cfbed7a3988979d5f320ad7771e513d4cc8') + # releases 2.0.1+ added a pkg-config package version('1.12.1', sha256='9a0b4722a9864fa0728241ecca2e4c1b3de8e60a5d6fe3f92dec7b8bbfbc850d') version('1.12.0', sha256='adab7275bddcd8b5ba28478db513371137188beef5ef40489edb1c34fe2bf421') version('1.11.0', sha256='b6f30b548aa15e42d299f3fdb15f69df4777c1b20ca24d8d7dee552d76870eff') @@ -58,6 +53,7 @@ class Catch2(CMakePackage): version('1.7.2', sha256='4aeca774db0ebbea0f86548e1c742fbc4c67c8cf0da550fbfe3e55efa1cc2178') version('1.7.1', sha256='46b289866f9b44c850cc1e48d0ead479494fd8ef0cdb9eda88b1dfd5b990556a') version('1.7.0', sha256='55ff8904d1215aadaa003ae50e1ad82747c655004b43bf30c656cb20e1c89050') + # releases 1.7.0+ added "make install" version('1.6.1', sha256='83ad2744529b3b507eee188dba23baf6b5c038fccbbe4b3256172c04420292e4') version('1.6.0', sha256='9a7aed27cc58eee0e694135503dcc7fc99c7ec254416cff44fe10166a5f1f68c') version('1.5.9', sha256='0ba04d0eefcf5a1d4c9e9e79f051f1f93de704ea4429a247f69ec76c2c6647cd') @@ -66,20 +62,29 @@ class Catch2(CMakePackage): version('1.3.5', sha256='f15730d81b4173fb860ce3561768de7d41bbefb67dc031d7d1f5ae2c07f0a472') version('1.3.0', sha256='245f6ee73e2fea66311afa1da59e5087ddab8b37ce64994ad88506e8af28c6ac') - @when('+single_header') + def cmake_args(self): + spec = self.spec + args = [] + # 1.7.0-1.9.3: no control over test builds + if spec.satisfies('@1.9.4:2.1.0'): + args.append('-DNO_SELFTEST={0}'.format( + 'OFF' if self.run_tests else 'ON')) + elif spec.satisfies('@2.1.1:'): + args.append('-DBUILD_TESTING:BOOL={0}'.format( + 'ON' if self.run_tests else 'OFF')) + return args + + @when('@:1.6.99') def cmake(self, spec, prefix): pass - @when('+single_header') + @when('@:1.6.99') def build(self, spec, prefix): pass - @when('+single_header') + @when('@:1.6.99') def install(self, spec, prefix): mkdirp(prefix.include) - if spec.satisfies('@2.3.0:'): - install_tree('single_include', prefix.include) - else: - install(join_path('single_include', 'catch.hpp'), prefix.include) + install(join_path('single_include', 'catch.hpp'), prefix.include) # fakes out spack so it installs a module file mkdirp(join_path(prefix, 'bin')) diff --git a/var/spack/repos/builtin/packages/openpmd-api/package.py b/var/spack/repos/builtin/packages/openpmd-api/package.py index d01ca40b482..46ac2eaecb4 100644 --- a/var/spack/repos/builtin/packages/openpmd-api/package.py +++ b/var/spack/repos/builtin/packages/openpmd-api/package.py @@ -35,7 +35,7 @@ class OpenpmdApi(CMakePackage): depends_on('cmake@3.11.0:', type='build') depends_on('mpark-variant@1.4.0:') - depends_on('catch2@2.6.1: ~single_header', type='test') + depends_on('catch2@2.6.1:', type='test') depends_on('mpi@2.3:', when='+mpi') # might become MPI 3.0+ depends_on('hdf5@1.8.13:', when='+hdf5') depends_on('hdf5@1.8.13: ~mpi', when='~mpi +hdf5') From 4c215d1fedea02101bcadeef3678d6d3c536929b Mon Sep 17 00:00:00 2001 From: noguchi-k <55966120+noguchi-k@users.noreply.github.com> Date: Wed, 19 Feb 2020 14:48:46 +0900 Subject: [PATCH 133/238] modern-wheel: add virtual destructor to BaseMultiParms class (#14899) * modern-wheel: add virtual destructor * modern-wheel: add maintainers --- .../modern-wheel/add_virtual_destructor.patch | 17 +++++++++++++++++ .../builtin/packages/modern-wheel/package.py | 4 ++++ 2 files changed, 21 insertions(+) create mode 100644 var/spack/repos/builtin/packages/modern-wheel/add_virtual_destructor.patch diff --git a/var/spack/repos/builtin/packages/modern-wheel/add_virtual_destructor.patch b/var/spack/repos/builtin/packages/modern-wheel/add_virtual_destructor.patch new file mode 100644 index 00000000000..84e12a8a108 --- /dev/null +++ b/var/spack/repos/builtin/packages/modern-wheel/add_virtual_destructor.patch @@ -0,0 +1,17 @@ +--- spack-src/test/prototype_factory_test.cpp.org 2020-02-07 11:17:24.321582233 +0900 ++++ spack-src/test/prototype_factory_test.cpp 2020-02-07 11:18:25.598262173 +0900 +@@ -58,6 +58,7 @@ + virtual clone_type clone(int a) = 0; + virtual clone_type clone(int a, int b) = 0; + virtual int get() = 0; ++ virtual ~BaseMultiParms() {} + }; + + class DerivedSum : public BaseMultiParms { +@@ -121,4 +122,4 @@ + auto objb = factory.create(0, 3, 6); + BOOST_CHECK_EQUAL(objb->get(), 9); + } +-BOOST_AUTO_TEST_SUITE_END() +\ No newline at end of file ++BOOST_AUTO_TEST_SUITE_END() diff --git a/var/spack/repos/builtin/packages/modern-wheel/package.py b/var/spack/repos/builtin/packages/modern-wheel/package.py index e6c76bdc47b..9fae68cd0de 100644 --- a/var/spack/repos/builtin/packages/modern-wheel/package.py +++ b/var/spack/repos/builtin/packages/modern-wheel/package.py @@ -14,6 +14,7 @@ class ModernWheel(CMakePackage): homepage = "https://github.com/alalazo/modern_wheel" url = "https://github.com/alalazo/modern_wheel/archive/1.2.tar.gz" + maintainers = ['alalazo'] version('1.2', sha256='48612f698d7159f0eb10d93ddc3e2682b06a54d3a836ff227636be3261aed15e') version('1.1', sha256='d8ba4891257b96108e9b9406a556f8ced3b71ce85c3fcdca6bfd9cc37bf010a3') @@ -35,6 +36,9 @@ class ModernWheel(CMakePackage): depends_on('boost +system +filesystem', when='@:1.1.999') depends_on('boost@:1.65.999 +system +filesystem', when='@1.2:') + # add virtual destructor to BaseMultiParms class. + patch('add_virtual_destructor.patch') + def cmake_args(self): spec = self.spec return [ From 26ad754f42f03107da50dbc2e65e5a91826b4a92 Mon Sep 17 00:00:00 2001 From: Kai Torben Ohlhus Date: Wed, 19 Feb 2020 14:49:27 +0900 Subject: [PATCH 134/238] octave: enable 64-bit BLAS builds. (#15035) * octave: enable 64-bit BLAS builds. Perform necessary actions [as described in the manual](https://octave.org/doc/v5.2.0/Compiling-Octave-with-64_002dbit-Indexing.html). * Update package.py --- var/spack/repos/builtin/packages/octave/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index 29ea7ea8983..26a21e78919 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -269,6 +269,12 @@ def configure_args(self): else: config_args.append("--without-z") + # If 64-bit BLAS is used: + if (spec.satisfies('^openblas+ilp64') or + spec.satisfies('^intel-mkl+ilp64') or + spec.satisfies('^intel-parallel-studio+mkl+ilp64')): + config_args.append('F77_INTEGER_8_FLAG=-fdefault-integer-8') + return config_args # ======================================================================== From 2f4881d582181b275d13ad2098a3c89b563e9f97 Mon Sep 17 00:00:00 2001 From: "Nichols A. Romero" Date: Tue, 18 Feb 2020 23:50:07 -0600 Subject: [PATCH 135/238] Add latest 3.9.x releases QMCPACK (#15056) --- var/spack/repos/builtin/packages/qmcpack/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/qmcpack/package.py b/var/spack/repos/builtin/packages/qmcpack/package.py index 6676e7a0f23..1ac4998c878 100644 --- a/var/spack/repos/builtin/packages/qmcpack/package.py +++ b/var/spack/repos/builtin/packages/qmcpack/package.py @@ -22,6 +22,8 @@ class Qmcpack(CMakePackage, CudaPackage): # can occasionally change. # NOTE: 12/19/2017 QMCPACK 3.0.0 does not build properly with Spack. version('develop') + version('3.9.1', tag='v3.9.1') + version('3.9.0', tag='v3.9.0') version('3.8.0', tag='v3.8.0') version('3.7.0', tag='v3.7.0') version('3.6.0', tag='v3.6.0') @@ -115,6 +117,7 @@ class Qmcpack(CMakePackage, CudaPackage): depends_on('boost@1.61.0:', when='@3.6.0:') depends_on('libxml2') depends_on('mpi', when='+mpi') + depends_on('python@3:', when='@3.9:') # HDF5 depends_on('hdf5~mpi', when='~phdf5') From f2aca86502eded1500489cd13799d8826e6fc9d2 Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Wed, 19 Feb 2020 00:04:22 -0800 Subject: [PATCH 136/238] Distributed builds (#13100) Fixes #9394 Closes #13217. ## Background Spack provides the ability to enable/disable parallel builds through two options: package `parallel` and configuration `build_jobs`. This PR changes the algorithm to allow multiple, simultaneous processes to coordinate the installation of the same spec (and specs with overlapping dependencies.). The `parallel` (boolean) property sets the default for its package though the value can be overridden in the `install` method. Spack's current parallel builds are limited to build tools supporting `jobs` arguments (e.g., `Makefiles`). The number of jobs actually used is calculated as`min(config:build_jobs, # cores, 16)`, which can be overridden in the package or on the command line (i.e., `spack install -j <# jobs>`). This PR adds support for distributed (single- and multi-node) parallel builds. The goals of this work include improving the efficiency of installing packages with many dependencies and reducing the repetition associated with concurrent installations of (dependency) packages. ## Approach ### File System Locks Coordination between concurrent installs of overlapping packages to a Spack instance is accomplished through bottom-up dependency DAG processing and file system locks. The runs can be a combination of interactive and batch processes affecting the same file system. Exclusive prefix locks are required to install a package while shared prefix locks are required to check if the package is installed. Failures are communicated through a separate exclusive prefix failure lock, for concurrent processes, combined with a persistent store, for separate, related build processes. The resulting file contains the failing spec to facilitate manual debugging. ### Priority Queue Management of dependency builds changed from reliance on recursion to use of a priority queue where the priority of a spec is based on the number of its remaining uninstalled dependencies. Using a queue required a change to dependency build exception handling with the most visible issue being that the `install` method *must* install something in the prefix. Consequently, packages can no longer get away with an install method consisting of `pass`, for example. ## Caveats - This still only parallelizes a single-rooted build. Multi-rooted installs (e.g., for environments) are TBD in a future PR. Tasks: - [x] Adjust package lock timeout to correspond to value used in the demo - [x] Adjust database lock timeout to reduce contention on startup of concurrent `spack install ` calls - [x] Replace (test) package's `install: pass` methods with file creation since post-install `sanity_check_prefix` will otherwise error out with `Install failed .. Nothing was installed!` - [x] Resolve remaining existing test failures - [x] Respond to alalazo's initial feedback - [x] Remove `bin/demo-locks.py` - [x] Add new tests to address new coverage issues - [x] Replace built-in package's `def install(..): pass` to "install" something (i.e., only `apple-libunwind`) - [x] Increase code coverage --- etc/spack/defaults/config.yaml | 2 +- lib/spack/llnl/util/lock.py | 261 ++- lib/spack/llnl/util/tty/__init__.py | 4 +- lib/spack/spack/cmd/install.py | 2 +- lib/spack/spack/database.py | 185 +- lib/spack/spack/installer.py | 1597 +++++++++++++++++ lib/spack/spack/main.py | 9 + lib/spack/spack/package.py | 634 +------ lib/spack/spack/pkgkit.py | 5 +- lib/spack/spack/report.py | 39 +- lib/spack/spack/stage.py | 3 +- lib/spack/spack/test/buildtask.py | 66 + lib/spack/spack/test/cmd/env.py | 4 +- lib/spack/spack/test/cmd/install.py | 41 +- lib/spack/spack/test/conftest.py | 20 +- lib/spack/spack/test/database.py | 116 ++ lib/spack/spack/test/install.py | 24 +- lib/spack/spack/test/installer.py | 579 ++++++ lib/spack/spack/test/llnl/util/lock.py | 54 + .../repos/builtin.mock/packages/a/package.py | 4 +- .../repos/builtin.mock/packages/b/package.py | 3 - .../builtin.mock/packages/boost/package.py | 3 - .../repos/builtin.mock/packages/c/package.py | 3 - .../packages/conflicting-dependent/package.py | 3 - .../dep-diamond-patch-mid1/package.py | 3 - .../dep-diamond-patch-mid2/package.py | 3 - .../packages/dep-diamond-patch-top/package.py | 3 - .../packages/develop-test/package.py | 3 - .../packages/develop-test2/package.py | 3 - .../packages/direct-mpich/package.py | 3 - .../packages/dt-diamond-bottom/package.py | 3 - .../packages/dt-diamond-left/package.py | 3 - .../packages/dt-diamond-right/package.py | 3 - .../packages/dt-diamond/package.py | 3 - .../builtin.mock/packages/dtbuild1/package.py | 3 - .../builtin.mock/packages/dtbuild2/package.py | 3 - .../builtin.mock/packages/dtbuild3/package.py | 3 - .../builtin.mock/packages/dtlink1/package.py | 3 - .../builtin.mock/packages/dtlink2/package.py | 3 - .../builtin.mock/packages/dtlink3/package.py | 3 - .../builtin.mock/packages/dtlink4/package.py | 3 - .../builtin.mock/packages/dtlink5/package.py | 3 - .../builtin.mock/packages/dtrun1/package.py | 3 - .../builtin.mock/packages/dtrun2/package.py | 3 - .../builtin.mock/packages/dtrun3/package.py | 3 - .../builtin.mock/packages/dttop/package.py | 3 - .../builtin.mock/packages/dtuse/package.py | 3 - .../repos/builtin.mock/packages/e/package.py | 3 - .../packages/externalmodule/package.py | 3 - .../packages/externalprereq/package.py | 3 - .../packages/externaltool/package.py | 3 - .../packages/externalvirtual/package.py | 3 - .../builtin.mock/packages/fake/package.py | 3 - .../builtin.mock/packages/flake8/package.py | 6 +- .../packages/git-svn-top-level/package.py | 3 - .../builtin.mock/packages/git-test/package.py | 3 - .../packages/git-top-level/package.py | 3 - .../packages/git-url-svn-top-level/package.py | 3 - .../packages/git-url-top-level/package.py | 3 - .../packages/hash-test1/package.py | 10 +- .../packages/hash-test2/package.py | 7 +- .../packages/hash-test3/package.py | 10 +- .../builtin.mock/packages/hg-test/package.py | 3 - .../packages/hg-top-level/package.py | 3 - .../builtin.mock/packages/hypre/package.py | 3 - .../packages/indirect-mpich/package.py | 3 - .../packages/maintainers-1/package.py | 3 - .../packages/maintainers-2/package.py | 3 - .../packages/mixedversions/package.py | 3 - .../packages/module-path-separator/package.py | 3 - .../packages/multi-provider-mpi/package.py | 3 - .../multimodule-inheritance/package.py | 3 - .../packages/multivalue_variant/package.py | 3 - .../packages/netlib-blas/package.py | 3 - .../packages/netlib-lapack/package.py | 3 - .../packages/nosource-install/package.py | 7 +- .../packages/openblas-with-lapack/package.py | 3 - .../builtin.mock/packages/openblas/package.py | 3 - .../packages/optional-dep-test-2/package.py | 3 - .../packages/optional-dep-test-3/package.py | 3 - .../packages/optional-dep-test/package.py | 3 - .../packages/othervirtual/package.py | 3 - .../override-context-templates/package.py | 3 - .../override-module-templates/package.py | 3 - .../packages/patch-a-dependency/package.py | 3 - .../patch-several-dependencies/package.py | 3 - .../builtin.mock/packages/patch/package.py | 3 - .../builtin.mock/packages/perl/package.py | 3 - .../packages/preferred-test/package.py | 3 - .../builtin.mock/packages/python/package.py | 3 - .../packages/simple-inheritance/package.py | 3 - .../singlevalue-variant-dependent/package.py | 3 - .../builtin.mock/packages/svn-test/package.py | 3 - .../packages/svn-top-level/package.py | 3 - .../packages/url-list-test/package.py | 6 +- .../builtin.mock/packages/url-test/package.py | 3 - .../packages/when-directives-false/package.py | 3 - .../packages/when-directives-true/package.py | 3 - .../builtin.mock/packages/zmpi/package.py | 3 - .../packages/apple-libunwind/package.py | 3 +- 100 files changed, 2954 insertions(+), 963 deletions(-) create mode 100755 lib/spack/spack/installer.py create mode 100644 lib/spack/spack/test/buildtask.py create mode 100644 lib/spack/spack/test/installer.py diff --git a/etc/spack/defaults/config.yaml b/etc/spack/defaults/config.yaml index 3aadccfda1c..32745a309a1 100644 --- a/etc/spack/defaults/config.yaml +++ b/etc/spack/defaults/config.yaml @@ -137,7 +137,7 @@ config: # when Spack needs to manage its own package metadata and all operations are # expected to complete within the default time limit. The timeout should # therefore generally be left untouched. - db_lock_timeout: 120 + db_lock_timeout: 3 # How long to wait when attempting to modify a package (e.g. to install it). diff --git a/lib/spack/llnl/util/lock.py b/lib/spack/llnl/util/lock.py index 63f970c98b1..b295341d489 100644 --- a/lib/spack/llnl/util/lock.py +++ b/lib/spack/llnl/util/lock.py @@ -8,14 +8,32 @@ import errno import time import socket +from datetime import datetime import llnl.util.tty as tty +import spack.util.string __all__ = ['Lock', 'LockTransaction', 'WriteTransaction', 'ReadTransaction', 'LockError', 'LockTimeoutError', 'LockPermissionError', 'LockROFileError', 'CantCreateLockError'] +#: Mapping of supported locks to description +lock_type = {fcntl.LOCK_SH: 'read', fcntl.LOCK_EX: 'write'} + +#: A useful replacement for functions that should return True when not provided +#: for example. +true_fn = lambda: True + + +def _attempts_str(wait_time, nattempts): + # Don't print anything if we succeeded on the first try + if nattempts <= 1: + return '' + + attempts = spack.util.string.plural(nattempts, 'attempt') + return ' after {0:0.2f}s and {1}'.format(wait_time, attempts) + class Lock(object): """This is an implementation of a filesystem lock using Python's lockf. @@ -31,8 +49,8 @@ class Lock(object): maintain multiple locks on the same file. """ - def __init__(self, path, start=0, length=0, debug=False, - default_timeout=None): + def __init__(self, path, start=0, length=0, default_timeout=None, + debug=False, desc=''): """Construct a new lock on the file at ``path``. By default, the lock applies to the whole file. Optionally, @@ -43,6 +61,16 @@ def __init__(self, path, start=0, length=0, debug=False, not currently expose the ``whence`` parameter -- ``whence`` is always ``os.SEEK_SET`` and ``start`` is always evaluated from the beginning of the file. + + Args: + path (str): path to the lock + start (int): optional byte offset at which the lock starts + length (int): optional number of bytes to lock + default_timeout (int): number of seconds to wait for lock attempts, + where None means to wait indefinitely + debug (bool): debug mode specific to locking + desc (str): optional debug message lock description, which is + helpful for distinguishing between different Spack locks. """ self.path = path self._file = None @@ -56,6 +84,9 @@ def __init__(self, path, start=0, length=0, debug=False, # enable debug mode self.debug = debug + # optional debug description + self.desc = ' ({0})'.format(desc) if desc else '' + # If the user doesn't set a default timeout, or if they choose # None, 0, etc. then lock attempts will not time out (unless the # user sets a timeout for each attempt) @@ -89,6 +120,20 @@ def _poll_interval_generator(_wait_times=None): num_requests += 1 yield wait_time + def __repr__(self): + """Formal representation of the lock.""" + rep = '{0}('.format(self.__class__.__name__) + for attr, value in self.__dict__.items(): + rep += '{0}={1}, '.format(attr, value.__repr__()) + return '{0})'.format(rep.strip(', ')) + + def __str__(self): + """Readable string (with key fields) of the lock.""" + location = '{0}[{1}:{2}]'.format(self.path, self._start, self._length) + timeout = 'timeout={0}'.format(self.default_timeout) + activity = '#reads={0}, #writes={1}'.format(self._reads, self._writes) + return '({0}, {1}, {2})'.format(location, timeout, activity) + def _lock(self, op, timeout=None): """This takes a lock using POSIX locks (``fcntl.lockf``). @@ -99,8 +144,9 @@ def _lock(self, op, timeout=None): successfully acquired, the total wait time and the number of attempts is returned. """ - assert op in (fcntl.LOCK_SH, fcntl.LOCK_EX) + assert op in lock_type + self._log_acquiring('{0} LOCK'.format(lock_type[op].upper())) timeout = timeout or self.default_timeout # Create file and parent directories if they don't exist. @@ -128,6 +174,9 @@ def _lock(self, op, timeout=None): # If the file were writable, we'd have opened it 'r+' raise LockROFileError(self.path) + tty.debug("{0} locking [{1}:{2}]: timeout {3} sec" + .format(lock_type[op], self._start, self._length, timeout)) + poll_intervals = iter(Lock._poll_interval_generator()) start_time = time.time() num_attempts = 0 @@ -139,17 +188,21 @@ def _lock(self, op, timeout=None): time.sleep(next(poll_intervals)) + # TBD: Is an extra attempt after timeout needed/appropriate? num_attempts += 1 if self._poll_lock(op): total_wait_time = time.time() - start_time return total_wait_time, num_attempts - raise LockTimeoutError("Timed out waiting for lock.") + raise LockTimeoutError("Timed out waiting for a {0} lock." + .format(lock_type[op])) def _poll_lock(self, op): """Attempt to acquire the lock in a non-blocking manner. Return whether the locking attempt succeeds """ + assert op in lock_type + try: # Try to get the lock (will raise if not available.) fcntl.lockf(self._file, op | fcntl.LOCK_NB, @@ -159,6 +212,9 @@ def _poll_lock(self, op): if self.debug: # All locks read the owner PID and host self._read_debug_data() + tty.debug('{0} locked {1} [{2}:{3}] (owner={4})' + .format(lock_type[op], self.path, + self._start, self._length, self.pid)) # Exclusive locks write their PID/host if op == fcntl.LOCK_EX: @@ -167,12 +223,12 @@ def _poll_lock(self, op): return True except IOError as e: - if e.errno in (errno.EAGAIN, errno.EACCES): - # EAGAIN and EACCES == locked by another process - pass - else: + # EAGAIN and EACCES == locked by another process (so try again) + if e.errno not in (errno.EAGAIN, errno.EACCES): raise + return False + def _ensure_parent_directory(self): parent = os.path.dirname(self.path) @@ -227,6 +283,8 @@ def _unlock(self): self._length, self._start, os.SEEK_SET) self._file.close() self._file = None + self._reads = 0 + self._writes = 0 def acquire_read(self, timeout=None): """Acquires a recursive, shared lock for reading. @@ -242,15 +300,14 @@ def acquire_read(self, timeout=None): timeout = timeout or self.default_timeout if self._reads == 0 and self._writes == 0: - self._debug( - 'READ LOCK: {0.path}[{0._start}:{0._length}] [Acquiring]' - .format(self)) # can raise LockError. wait_time, nattempts = self._lock(fcntl.LOCK_SH, timeout=timeout) - self._acquired_debug('READ LOCK', wait_time, nattempts) self._reads += 1 + # Log if acquired, which includes counts when verbose + self._log_acquired('READ LOCK', wait_time, nattempts) return True else: + # Increment the read count for nested lock tracking self._reads += 1 return False @@ -268,13 +325,11 @@ def acquire_write(self, timeout=None): timeout = timeout or self.default_timeout if self._writes == 0: - self._debug( - 'WRITE LOCK: {0.path}[{0._start}:{0._length}] [Acquiring]' - .format(self)) # can raise LockError. wait_time, nattempts = self._lock(fcntl.LOCK_EX, timeout=timeout) - self._acquired_debug('WRITE LOCK', wait_time, nattempts) self._writes += 1 + # Log if acquired, which includes counts when verbose + self._log_acquired('WRITE LOCK', wait_time, nattempts) # return True only if we weren't nested in a read lock. # TODO: we may need to return two values: whether we got @@ -282,9 +337,65 @@ def acquire_write(self, timeout=None): # write lock for the first time. Now it returns the latter. return self._reads == 0 else: + # Increment the write count for nested lock tracking self._writes += 1 return False + def is_write_locked(self): + """Check if the file is write locked + + Return: + (bool): ``True`` if the path is write locked, otherwise, ``False`` + """ + try: + self.acquire_read() + + # If we have a read lock then no other process has a write lock. + self.release_read() + except LockTimeoutError: + # Another process is holding a write lock on the file + return True + + return False + + def downgrade_write_to_read(self, timeout=None): + """ + Downgrade from an exclusive write lock to a shared read. + + Raises: + LockDowngradeError: if this is an attempt at a nested transaction + """ + timeout = timeout or self.default_timeout + + if self._writes == 1 and self._reads == 0: + self._log_downgrading() + # can raise LockError. + wait_time, nattempts = self._lock(fcntl.LOCK_SH, timeout=timeout) + self._reads = 1 + self._writes = 0 + self._log_downgraded(wait_time, nattempts) + else: + raise LockDowngradeError(self.path) + + def upgrade_read_to_write(self, timeout=None): + """ + Attempts to upgrade from a shared read lock to an exclusive write. + + Raises: + LockUpgradeError: if this is an attempt at a nested transaction + """ + timeout = timeout or self.default_timeout + + if self._reads == 1 and self._writes == 0: + self._log_upgrading() + # can raise LockError. + wait_time, nattempts = self._lock(fcntl.LOCK_EX, timeout=timeout) + self._reads = 0 + self._writes = 1 + self._log_upgraded(wait_time, nattempts) + else: + raise LockUpgradeError(self.path) + def release_read(self, release_fn=None): """Releases a read lock. @@ -305,17 +416,17 @@ def release_read(self, release_fn=None): """ assert self._reads > 0 + locktype = 'READ LOCK' if self._reads == 1 and self._writes == 0: - self._debug( - 'READ LOCK: {0.path}[{0._start}:{0._length}] [Released]' - .format(self)) + self._log_releasing(locktype) - result = True - if release_fn is not None: - result = release_fn() + # we need to call release_fn before releasing the lock + release_fn = release_fn or true_fn + result = release_fn() self._unlock() # can raise LockError. - self._reads -= 1 + self._reads = 0 + self._log_released(locktype) return result else: self._reads -= 1 @@ -339,45 +450,91 @@ def release_write(self, release_fn=None): """ assert self._writes > 0 + release_fn = release_fn or true_fn + locktype = 'WRITE LOCK' if self._writes == 1 and self._reads == 0: - self._debug( - 'WRITE LOCK: {0.path}[{0._start}:{0._length}] [Released]' - .format(self)) + self._log_releasing(locktype) # we need to call release_fn before releasing the lock - result = True - if release_fn is not None: - result = release_fn() + result = release_fn() self._unlock() # can raise LockError. - self._writes -= 1 + self._writes = 0 + self._log_released(locktype) return result - else: self._writes -= 1 # when the last *write* is released, we call release_fn here # instead of immediately before releasing the lock. if self._writes == 0: - return release_fn() if release_fn is not None else True + return release_fn() else: return False def _debug(self, *args): tty.debug(*args) - def _acquired_debug(self, lock_type, wait_time, nattempts): - attempts_format = 'attempt' if nattempts == 1 else 'attempt' - if nattempts > 1: - acquired_attempts_format = ' after {0:0.2f}s and {1:d} {2}'.format( - wait_time, nattempts, attempts_format) - else: - # Dont print anything if we succeeded immediately - acquired_attempts_format = '' - self._debug( - '{0}: {1.path}[{1._start}:{1._length}] [Acquired{2}]' - .format(lock_type, self, acquired_attempts_format)) + def _get_counts_desc(self): + return '(reads {0}, writes {1})'.format(self._reads, self._writes) \ + if tty.is_verbose() else '' + + def _log_acquired(self, locktype, wait_time, nattempts): + attempts_part = _attempts_str(wait_time, nattempts) + now = datetime.now() + desc = 'Acquired at %s' % now.strftime("%H:%M:%S.%f") + self._debug(self._status_msg(locktype, '{0}{1}'. + format(desc, attempts_part))) + + def _log_acquiring(self, locktype): + self._debug2(self._status_msg(locktype, 'Acquiring')) + + def _log_downgraded(self, wait_time, nattempts): + attempts_part = _attempts_str(wait_time, nattempts) + now = datetime.now() + desc = 'Downgraded at %s' % now.strftime("%H:%M:%S.%f") + self._debug(self._status_msg('READ LOCK', '{0}{1}' + .format(desc, attempts_part))) + + def _log_downgrading(self): + self._debug2(self._status_msg('WRITE LOCK', 'Downgrading')) + + def _log_released(self, locktype): + now = datetime.now() + desc = 'Released at %s' % now.strftime("%H:%M:%S.%f") + self._debug(self._status_msg(locktype, desc)) + + def _log_releasing(self, locktype): + self._debug2(self._status_msg(locktype, 'Releasing')) + + def _log_upgraded(self, wait_time, nattempts): + attempts_part = _attempts_str(wait_time, nattempts) + now = datetime.now() + desc = 'Upgraded at %s' % now.strftime("%H:%M:%S.%f") + self._debug(self._status_msg('WRITE LOCK', '{0}{1}'. + format(desc, attempts_part))) + + def _log_upgrading(self): + self._debug2(self._status_msg('READ LOCK', 'Upgrading')) + + def _status_msg(self, locktype, status): + status_desc = '[{0}] {1}'.format(status, self._get_counts_desc()) + return '{0}{1.desc}: {1.path}[{1._start}:{1._length}] {2}'.format( + locktype, self, status_desc) + + def _debug2(self, *args): + # TODO: Easy place to make a single, temporary change to the + # TODO: debug level associated with the more detailed messages. + # TODO: + # TODO: Someday it would be great if we could switch this to + # TODO: another level, perhaps _between_ debug and verbose, or + # TODO: some other form of filtering so the first level of + # TODO: debugging doesn't have to generate these messages. Using + # TODO: verbose here did not work as expected because tests like + # TODO: test_spec_json will write the verbose messages to the + # TODO: output that is used to check test correctness. + tty.debug(*args) class LockTransaction(object): @@ -462,10 +619,28 @@ class LockError(Exception): """Raised for any errors related to locks.""" +class LockDowngradeError(LockError): + """Raised when unable to downgrade from a write to a read lock.""" + def __init__(self, path): + msg = "Cannot downgrade lock from write to read on file: %s" % path + super(LockDowngradeError, self).__init__(msg) + + +class LockLimitError(LockError): + """Raised when exceed maximum attempts to acquire a lock.""" + + class LockTimeoutError(LockError): """Raised when an attempt to acquire a lock times out.""" +class LockUpgradeError(LockError): + """Raised when unable to upgrade from a read to a write lock.""" + def __init__(self, path): + msg = "Cannot upgrade lock from read to write on file: %s" % path + super(LockUpgradeError, self).__init__(msg) + + class LockPermissionError(LockError): """Raised when there are permission issues with a lock.""" diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index 668e881b2a2..41eef5d2842 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -135,7 +135,9 @@ def process_stacktrace(countback): def get_timestamp(force=False): """Get a string timestamp""" if _debug or _timestamp or force: - return datetime.now().strftime("[%Y-%m-%d-%H:%M:%S.%f] ") + # Note inclusion of the PID is useful for parallel builds. + return '[{0}, {1}] '.format( + datetime.now().strftime("%Y-%m-%d-%H:%M:%S.%f"), os.getpid()) else: return '' diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index 9e136439205..e2a6327f5f4 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -47,7 +47,7 @@ def update_kwargs_from_args(args, kwargs): }) kwargs.update({ - 'install_dependencies': ('dependencies' in args.things_to_install), + 'install_deps': ('dependencies' in args.things_to_install), 'install_package': ('package' in args.things_to_install) }) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 65b85e026ba..e04a1f292aa 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -37,6 +37,7 @@ import spack.store import spack.repo import spack.spec +import spack.util.lock as lk import spack.util.spack_yaml as syaml import spack.util.spack_json as sjson from spack.filesystem_view import YamlFilesystemView @@ -44,7 +45,9 @@ from spack.directory_layout import DirectoryLayoutError from spack.error import SpackError from spack.version import Version -from spack.util.lock import Lock, WriteTransaction, ReadTransaction, LockError + +# TODO: Provide an API automatically retyring a build after detecting and +# TODO: clearing a failure. # DB goes in this directory underneath the root _db_dirname = '.spack-db' @@ -65,9 +68,20 @@ (Version('0.9.3'), Version('5')), ] -# Timeout for spack database locks in seconds +# Default timeout for spack database locks in seconds or None (no timeout). +# A balance needs to be struck between quick turnaround for parallel installs +# (to avoid excess delays) and waiting long enough when the system is busy +# (to ensure the database is updated). _db_lock_timeout = 120 +# Default timeout for spack package locks in seconds or None (no timeout). +# A balance needs to be struck between quick turnaround for parallel installs +# (to avoid excess delays when performing a parallel installation) and waiting +# long enough for the next possible spec to install (to avoid excessive +# checking of the last high priority package) or holding on to a lock (to +# ensure a failed install is properly tracked). +_pkg_lock_timeout = None + # Types of dependencies tracked by the database _tracked_deps = ('link', 'run') @@ -255,6 +269,9 @@ class Database(object): """Per-process lock objects for each install prefix.""" _prefix_locks = {} + """Per-process failure (lock) objects for each install prefix.""" + _prefix_failures = {} + def __init__(self, root, db_dir=None, upstream_dbs=None, is_upstream=False): """Create a Database for Spack installations under ``root``. @@ -295,17 +312,29 @@ def __init__(self, root, db_dir=None, upstream_dbs=None, # This is for other classes to use to lock prefix directories. self.prefix_lock_path = os.path.join(self._db_dir, 'prefix_lock') + # Ensure a persistent location for dealing with parallel installation + # failures (e.g., across near-concurrent processes). + self._failure_dir = os.path.join(self._db_dir, 'failures') + + # Support special locks for handling parallel installation failures + # of a spec. + self.prefix_fail_path = os.path.join(self._db_dir, 'prefix_failures') + # Create needed directories and files if not os.path.exists(self._db_dir): mkdirp(self._db_dir) + if not os.path.exists(self._failure_dir): + mkdirp(self._failure_dir) + self.is_upstream = is_upstream # initialize rest of state. self.db_lock_timeout = ( spack.config.get('config:db_lock_timeout') or _db_lock_timeout) self.package_lock_timeout = ( - spack.config.get('config:package_lock_timeout') or None) + spack.config.get('config:package_lock_timeout') or + _pkg_lock_timeout) tty.debug('DATABASE LOCK TIMEOUT: {0}s'.format( str(self.db_lock_timeout))) timeout_format_str = ('{0}s'.format(str(self.package_lock_timeout)) @@ -316,8 +345,9 @@ def __init__(self, root, db_dir=None, upstream_dbs=None, if self.is_upstream: self.lock = ForbiddenLock() else: - self.lock = Lock(self._lock_path, - default_timeout=self.db_lock_timeout) + self.lock = lk.Lock(self._lock_path, + default_timeout=self.db_lock_timeout, + desc='database') self._data = {} self.upstream_dbs = list(upstream_dbs) if upstream_dbs else [] @@ -332,14 +362,136 @@ def __init__(self, root, db_dir=None, upstream_dbs=None, def write_transaction(self): """Get a write lock context manager for use in a `with` block.""" - return WriteTransaction( + return lk.WriteTransaction( self.lock, acquire=self._read, release=self._write) def read_transaction(self): """Get a read lock context manager for use in a `with` block.""" - return ReadTransaction(self.lock, acquire=self._read) + return lk.ReadTransaction(self.lock, acquire=self._read) - def prefix_lock(self, spec): + def _failed_spec_path(self, spec): + """Return the path to the spec's failure file, which may not exist.""" + if not spec.concrete: + raise ValueError('Concrete spec required for failure path for {0}' + .format(spec.name)) + + return os.path.join(self._failure_dir, + '{0}-{1}'.format(spec.name, spec.full_hash())) + + def clear_failure(self, spec, force=False): + """ + Remove any persistent and cached failure tracking for the spec. + + see `mark_failed()`. + + Args: + spec (Spec): the spec whose failure indicators are being removed + force (bool): True if the failure information should be cleared + when a prefix failure lock exists for the file or False if + the failure should not be cleared (e.g., it may be + associated with a concurrent build) + + """ + failure_locked = self.prefix_failure_locked(spec) + if failure_locked and not force: + tty.msg('Retaining failure marking for {0} due to lock' + .format(spec.name)) + return + + if failure_locked: + tty.warn('Removing failure marking despite lock for {0}' + .format(spec.name)) + + lock = self._prefix_failures.pop(spec.prefix, None) + if lock: + lock.release_write() + + if self.prefix_failure_marked(spec): + try: + path = self._failed_spec_path(spec) + tty.debug('Removing failure marking for {0}'.format(spec.name)) + os.remove(path) + except OSError as err: + tty.warn('Unable to remove failure marking for {0} ({1}): {2}' + .format(spec.name, path, str(err))) + + def mark_failed(self, spec): + """ + Mark a spec as failing to install. + + Prefix failure marking takes the form of a byte range lock on the nth + byte of a file for coordinating between concurrent parallel build + processes and a persistent file, named with the full hash and + containing the spec, in a subdirectory of the database to enable + persistence across overlapping but separate related build processes. + + The failure lock file, ``spack.store.db.prefix_failures``, lives + alongside the install DB. ``n`` is the sys.maxsize-bit prefix of the + associated DAG hash to make the likelihood of collision very low with + no cleanup required. + """ + # Dump the spec to the failure file for (manual) debugging purposes + path = self._failed_spec_path(spec) + with open(path, 'w') as f: + spec.to_json(f) + + # Also ensure a failure lock is taken to prevent cleanup removal + # of failure status information during a concurrent parallel build. + err = 'Unable to mark {0.name} as failed.' + + prefix = spec.prefix + if prefix not in self._prefix_failures: + mark = lk.Lock( + self.prefix_fail_path, + start=spec.dag_hash_bit_prefix(bit_length(sys.maxsize)), + length=1, + default_timeout=self.package_lock_timeout, desc=spec.name) + + try: + mark.acquire_write() + except lk.LockTimeoutError: + # Unlikely that another process failed to install at the same + # time but log it anyway. + tty.debug('PID {0} failed to mark install failure for {1}' + .format(os.getpid(), spec.name)) + tty.warn(err.format(spec)) + + # Whether we or another process marked it as a failure, track it + # as such locally. + self._prefix_failures[prefix] = mark + + return self._prefix_failures[prefix] + + def prefix_failed(self, spec): + """Return True if the prefix (installation) is marked as failed.""" + # The failure was detected in this process. + if spec.prefix in self._prefix_failures: + return True + + # The failure was detected by a concurrent process (e.g., an srun), + # which is expected to be holding a write lock if that is the case. + if self.prefix_failure_locked(spec): + return True + + # Determine if the spec may have been marked as failed by a separate + # spack build process running concurrently. + return self.prefix_failure_marked(spec) + + def prefix_failure_locked(self, spec): + """Return True if a process has a failure lock on the spec.""" + check = lk.Lock( + self.prefix_fail_path, + start=spec.dag_hash_bit_prefix(bit_length(sys.maxsize)), + length=1, + default_timeout=self.package_lock_timeout, desc=spec.name) + + return check.is_write_locked() + + def prefix_failure_marked(self, spec): + """Determine if the spec has a persistent failure marking.""" + return os.path.exists(self._failed_spec_path(spec)) + + def prefix_lock(self, spec, timeout=None): """Get a lock on a particular spec's installation directory. NOTE: The installation directory **does not** need to exist. @@ -354,13 +506,16 @@ def prefix_lock(self, spec): readers-writer lock semantics with just a single lockfile, so no cleanup required. """ + timeout = timeout or self.package_lock_timeout prefix = spec.prefix if prefix not in self._prefix_locks: - self._prefix_locks[prefix] = Lock( + self._prefix_locks[prefix] = lk.Lock( self.prefix_lock_path, start=spec.dag_hash_bit_prefix(bit_length(sys.maxsize)), length=1, - default_timeout=self.package_lock_timeout) + default_timeout=timeout, desc=spec.name) + elif timeout != self._prefix_locks[prefix].default_timeout: + self._prefix_locks[prefix].default_timeout = timeout return self._prefix_locks[prefix] @@ -371,7 +526,7 @@ def prefix_read_lock(self, spec): try: yield self - except LockError: + except lk.LockError: # This addresses the case where a nested lock attempt fails inside # of this context manager raise @@ -388,7 +543,7 @@ def prefix_write_lock(self, spec): try: yield self - except LockError: + except lk.LockError: # This addresses the case where a nested lock attempt fails inside # of this context manager raise @@ -624,7 +779,7 @@ def _read_suppress_error(): self._error = e self._data = {} - transaction = WriteTransaction( + transaction = lk.WriteTransaction( self.lock, acquire=_read_suppress_error, release=self._write ) @@ -810,7 +965,7 @@ def _read(self): self._db_dir, os.R_OK | os.W_OK): # if we can write, then read AND write a JSON file. self._read_from_file(self._old_yaml_index_path, format='yaml') - with WriteTransaction(self.lock): + with lk.WriteTransaction(self.lock): self._write(None, None, None) else: # Read chck for a YAML file if we can't find JSON. @@ -823,7 +978,7 @@ def _read(self): " databases cannot generate an index file") # The file doesn't exist, try to traverse the directory. # reindex() takes its own write lock, so no lock here. - with WriteTransaction(self.lock): + with lk.WriteTransaction(self.lock): self._write(None, None, None) self.reindex(spack.store.layout) diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py new file mode 100755 index 00000000000..6e772fbb662 --- /dev/null +++ b/lib/spack/spack/installer.py @@ -0,0 +1,1597 @@ +# 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) + +""" +This module encapsulates package installation functionality. + +The PackageInstaller coordinates concurrent builds of packages for the same +Spack instance by leveraging the dependency DAG and file system locks. It +also proceeds with the installation of non-dependent packages of failed +dependencies in order to install as many dependencies of a package as possible. + +Bottom-up traversal of the dependency DAG while prioritizing packages with no +uninstalled dependencies allows multiple processes to perform concurrent builds +of separate packages associated with a spec. + +File system locks enable coordination such that no two processes attempt to +build the same or a failed dependency package. + +Failures to install dependency packages result in removal of their dependents' +build tasks from the current process. A failure file is also written (and +locked) so that other processes can detect the failure and adjust their build +tasks accordingly. + +This module supports the coordination of local and distributed concurrent +installations of packages in a Spack instance. +""" + +import glob +import heapq +import itertools +import os +import shutil +import six +import sys +import time + +import llnl.util.lock as lk +import llnl.util.tty as tty +import spack.binary_distribution as binary_distribution +import spack.compilers +import spack.error +import spack.hooks +import spack.package +import spack.repo +import spack.store + +from llnl.util.filesystem import \ + chgrp, install, install_tree, mkdirp, touch, working_dir +from llnl.util.tty.color import colorize, cwrite +from llnl.util.tty.log import log_output +from spack.package_prefs import get_package_dir_permissions, get_package_group +from spack.util.environment import dump_environment +from spack.util.executable import which + + +#: Counter to support unique spec sequencing that is used to ensure packages +#: with the same priority are (initially) processed in the order in which they +#: were added (see https://docs.python.org/2/library/heapq.html). +_counter = itertools.count(0) + +#: Build status indicating task has been added. +STATUS_ADDED = 'queued' + +#: Build status indicating the spec failed to install +STATUS_FAILED = 'failed' + +#: Build status indicating the spec is being installed (possibly by another +#: process) +STATUS_INSTALLING = 'installing' + +#: Build status indicating the spec was sucessfully installed +STATUS_INSTALLED = 'installed' + +#: Build status indicating the task has been popped from the queue +STATUS_DEQUEUED = 'dequeued' + +#: Build status indicating task has been removed (to maintain priority +#: queue invariants). +STATUS_REMOVED = 'removed' + + +def _handle_external_and_upstream(pkg, explicit): + """ + Determine if the package is external or upstream and register it in the + database if it is external package. + + Args: + pkg (Package): the package whose installation is under consideration + explicit (bool): the package was explicitly requested by the user + Return: + (bool): ``True`` if the package is external or upstream (so not to + be installed locally), otherwise, ``True`` + """ + # For external packages the workflow is simplified, and basically + # consists in module file generation and registration in the DB. + if pkg.spec.external: + _process_external_package(pkg, explicit) + return True + + if pkg.installed_upstream: + tty.verbose('{0} is installed in an upstream Spack instance at {1}' + .format(package_id(pkg), pkg.spec.prefix)) + _print_installed_pkg(pkg.prefix) + + # This will result in skipping all post-install hooks. In the case + # of modules this is considered correct because we want to retrieve + # the module from the upstream Spack instance. + return True + + return False + + +def _do_fake_install(pkg): + """ + Make a fake install directory containing fake executables, headers, + and libraries. + + Args: + pkg (PackageBase): the package whose installation is to be faked + """ + + command = pkg.name + header = pkg.name + library = pkg.name + + # Avoid double 'lib' for packages whose names already start with lib + if not pkg.name.startswith('lib'): + library = 'lib' + library + + dso_suffix = '.dylib' if sys.platform == 'darwin' else '.so' + chmod = which('chmod') + + # Install fake command + mkdirp(pkg.prefix.bin) + touch(os.path.join(pkg.prefix.bin, command)) + chmod('+x', os.path.join(pkg.prefix.bin, command)) + + # Install fake header file + mkdirp(pkg.prefix.include) + touch(os.path.join(pkg.prefix.include, header + '.h')) + + # Install fake shared and static libraries + mkdirp(pkg.prefix.lib) + for suffix in [dso_suffix, '.a']: + touch(os.path.join(pkg.prefix.lib, library + suffix)) + + # Install fake man page + mkdirp(pkg.prefix.man.man1) + + packages_dir = spack.store.layout.build_packages_path(pkg.spec) + dump_packages(pkg.spec, packages_dir) + + +def _packages_needed_to_bootstrap_compiler(pkg): + """ + Return a list of packages required to bootstrap `pkg`s compiler + + Checks Spack's compiler configuration for a compiler that + matches the package spec. + + Args: + pkg (Package): the package that may need its compiler installed + + Return: + (list) list of tuples, (PackageBase, bool), for concretized compiler- + -related packages that need to be installed and bool values + specify whether the package is the bootstrap compiler + (``True``) or one of its dependencies (``False``). The list + will be empty if there are no compilers. + """ + tty.debug('Bootstrapping {0} compiler for {1}' + .format(pkg.spec.compiler, package_id(pkg))) + compilers = spack.compilers.compilers_for_spec( + pkg.spec.compiler, arch_spec=pkg.spec.architecture) + if compilers: + return [] + + dep = spack.compilers.pkg_spec_for_compiler(pkg.spec.compiler) + dep.architecture = pkg.spec.architecture + # concrete CompilerSpec has less info than concrete Spec + # concretize as Spec to add that information + dep.concretize() + packages = [(s.package, False) for + s in dep.traverse(order='post', root=False)] + packages.append((dep.package, True)) + return packages + + +def _hms(seconds): + """ + Convert seconds to hours, minutes, seconds + + Args: + seconds (int): time to be converted in seconds + + Return: + (str) String representation of the time as #h #m #.##s + """ + m, s = divmod(seconds, 60) + h, m = divmod(m, 60) + + parts = [] + if h: + parts.append("%dh" % h) + if m: + parts.append("%dm" % m) + if s: + parts.append("%.2fs" % s) + return ' '.join(parts) + + +def _install_from_cache(pkg, cache_only, explicit): + """ + Install the package from binary cache + + Args: + pkg (PackageBase): the package to install from the binary cache + cache_only (bool): only install from binary cache + explicit (bool): ``True`` if installing the package was explicitly + requested by the user, otherwise, ``False`` + + Return: + (bool) ``True`` if the package was installed from binary cache, + ``False`` otherwise + """ + installed_from_cache = _try_install_from_binary_cache(pkg, explicit) + pkg_id = package_id(pkg) + if not installed_from_cache: + pre = 'No binary for {0} found'.format(pkg_id) + if cache_only: + tty.die('{0} when cache-only specified'.format(pre)) + + tty.debug('{0}: installing from source'.format(pre)) + return False + + tty.debug('Successfully installed {0} from binary cache'.format(pkg_id)) + _print_installed_pkg(pkg.spec.prefix) + spack.hooks.post_install(pkg.spec) + return True + + +def _print_installed_pkg(message): + """ + Output a message with a package icon. + + Args: + message (str): message to be output + """ + cwrite('@*g{[+]} ') + print(message) + + +def _process_external_package(pkg, explicit): + """ + Helper function to run post install hooks and register external packages. + + Args: + pkg (Package): the external package + explicit (bool): if the package was requested explicitly by the user, + ``False`` if it was pulled in as a dependency of an explicit + package. + """ + assert pkg.spec.external, \ + 'Expected to post-install/register an external package.' + + pre = '{s.name}@{s.version} :'.format(s=pkg.spec) + spec = pkg.spec + + if spec.external_module: + tty.msg('{0} has external module in {1}' + .format(pre, spec.external_module)) + tty.msg('{0} is actually installed in {1}' + .format(pre, spec.external_path)) + else: + tty.msg("{0} externally installed in {1}" + .format(pre, spec.external_path)) + + try: + # Check if the package was already registered in the DB. + # If this is the case, then just exit. + rec = spack.store.db.get_record(spec) + tty.msg('{0} already registered in DB'.format(pre)) + + # Update the value of rec.explicit if it is necessary + _update_explicit_entry_in_db(pkg, rec, explicit) + + except KeyError: + # If not, register it and generate the module file. + # For external packages we just need to run + # post-install hooks to generate module files. + tty.msg('{0} generating module file'.format(pre)) + spack.hooks.post_install(spec) + + # Add to the DB + tty.msg('{0} registering into DB'.format(pre)) + spack.store.db.add(spec, None, explicit=explicit) + + +def _process_binary_cache_tarball(pkg, binary_spec, explicit): + """ + Process the binary cache tarball. + + Args: + pkg (PackageBase): the package being installed + binary_spec (Spec): the spec whose cache has been confirmed + explicit (bool): the package was explicitly requested by the user + + Return: + (bool) ``True`` if the package was installed from binary cache, + else ``False`` + """ + tarball = binary_distribution.download_tarball(binary_spec) + # see #10063 : install from source if tarball doesn't exist + if tarball is None: + tty.msg('{0} exists in binary cache but with different hash' + .format(pkg.name)) + return False + + pkg_id = package_id(pkg) + tty.msg('Installing {0} from binary cache'.format(pkg_id)) + binary_distribution.extract_tarball(binary_spec, tarball, allow_root=False, + unsigned=False, force=False) + pkg.installed_from_binary_cache = True + spack.store.db.add(pkg.spec, spack.store.layout, explicit=explicit) + return True + + +def _try_install_from_binary_cache(pkg, explicit): + """ + Try to install the package from binary cache. + + Args: + pkg (PackageBase): the package to be installed from binary cache + explicit (bool): the package was explicitly requested by the user + """ + pkg_id = package_id(pkg) + tty.debug('Searching for binary cache of {0}'.format(pkg_id)) + specs = binary_distribution.get_specs() + binary_spec = spack.spec.Spec.from_dict(pkg.spec.to_dict()) + binary_spec._mark_concrete() + if binary_spec not in specs: + return False + + return _process_binary_cache_tarball(pkg, binary_spec, explicit) + + +def _update_explicit_entry_in_db(pkg, rec, explicit): + """ + Ensure the spec is marked explicit in the database. + + Args: + pkg (Package): the package whose install record is being updated + rec (InstallRecord): the external package + explicit (bool): if the package was requested explicitly by the user, + ``False`` if it was pulled in as a dependency of an explicit + package. + """ + if explicit and not rec.explicit: + with spack.store.db.write_transaction(): + rec = spack.store.db.get_record(pkg.spec) + message = '{s.name}@{s.version} : marking the package explicit' + tty.msg(message.format(s=pkg.spec)) + rec.explicit = True + + +def dump_packages(spec, path): + """ + Dump all package information for a spec and its dependencies. + + This creates a package repository within path for every namespace in the + spec DAG, and fills the repos wtih package files and patch files for every + node in the DAG. + + Args: + spec (Spec): the Spack spec whose package information is to be dumped + path (str): the path to the build packages directory + """ + mkdirp(path) + + # Copy in package.py files from any dependencies. + # Note that we copy them in as they are in the *install* directory + # NOT as they are in the repository, because we want a snapshot of + # how *this* particular build was done. + for node in spec.traverse(deptype=all): + if node is not spec: + # Locate the dependency package in the install tree and find + # its provenance information. + source = spack.store.layout.build_packages_path(node) + source_repo_root = os.path.join(source, node.namespace) + + # There's no provenance installed for the source package. Skip it. + # User can always get something current from the builtin repo. + if not os.path.isdir(source_repo_root): + continue + + # Create a source repo and get the pkg directory out of it. + try: + source_repo = spack.repo.Repo(source_repo_root) + source_pkg_dir = source_repo.dirname_for_package_name( + node.name) + except spack.repo.RepoError: + tty.warn("Warning: Couldn't copy in provenance for {0}" + .format(node.name)) + + # Create a destination repository + dest_repo_root = os.path.join(path, node.namespace) + if not os.path.exists(dest_repo_root): + spack.repo.create_repo(dest_repo_root) + repo = spack.repo.Repo(dest_repo_root) + + # Get the location of the package in the dest repo. + dest_pkg_dir = repo.dirname_for_package_name(node.name) + if node is not spec: + install_tree(source_pkg_dir, dest_pkg_dir) + else: + spack.repo.path.dump_provenance(node, dest_pkg_dir) + + +def install_msg(name, pid): + """ + Colorize the name/id of the package being installed + + Args: + name (str): Name/id of the package being installed + pid (id): id of the installer process + + Return: + (str) Colorized installing message + """ + return '{0}: '.format(pid) + colorize('@*{Installing} @*g{%s}' % name) + + +def log(pkg): + """ + Copy provenance into the install directory on success + + Args: + pkg (Package): the package that was installed and built + """ + packages_dir = spack.store.layout.build_packages_path(pkg.spec) + + # Remove first if we're overwriting another build + # (can happen with spack setup) + try: + # log and env install paths are inside this + shutil.rmtree(packages_dir) + except Exception as e: + # FIXME : this potentially catches too many things... + tty.debug(e) + + # Archive the whole stdout + stderr for the package + install(pkg.log_path, pkg.install_log_path) + + # Archive the environment used for the build + install(pkg.env_path, pkg.install_env_path) + + # Finally, archive files that are specific to each package + with working_dir(pkg.stage.path): + errors = six.StringIO() + target_dir = os.path.join( + spack.store.layout.metadata_path(pkg.spec), 'archived-files') + + for glob_expr in pkg.archive_files: + # Check that we are trying to copy things that are + # in the stage tree (not arbitrary files) + abs_expr = os.path.realpath(glob_expr) + if os.path.realpath(pkg.stage.path) not in abs_expr: + errors.write('[OUTSIDE SOURCE PATH]: {0}\n'.format(glob_expr)) + continue + # Now that we are sure that the path is within the correct + # folder, make it relative and check for matches + if os.path.isabs(glob_expr): + glob_expr = os.path.relpath(glob_expr, pkg.stage.path) + files = glob.glob(glob_expr) + for f in files: + try: + target = os.path.join(target_dir, f) + # We must ensure that the directory exists before + # copying a file in + mkdirp(os.path.dirname(target)) + install(f, target) + except Exception as e: + tty.debug(e) + + # Here try to be conservative, and avoid discarding + # the whole install procedure because of copying a + # single file failed + errors.write('[FAILED TO ARCHIVE]: {0}'.format(f)) + + if errors.getvalue(): + error_file = os.path.join(target_dir, 'errors.txt') + mkdirp(target_dir) + with open(error_file, 'w') as err: + err.write(errors.getvalue()) + tty.warn('Errors occurred when archiving files.\n\t' + 'See: {0}'.format(error_file)) + + dump_packages(pkg.spec, packages_dir) + + +def package_id(pkg): + """A "unique" package identifier for installation purposes + + The identifier is used to track build tasks, locks, install, and + failure statuses. + + Args: + pkg (PackageBase): the package from which the identifier is derived + """ + if not pkg.spec.concrete: + raise ValueError("Cannot provide a unique, readable id when " + "the spec is not concretized.") + # TODO: Restore use of the dag hash once resolve issues with different + # TODO: hashes being associated with dependents of different packages + # TODO: within the same install, such as the hash for callpath being + # TODO: different for mpich and dyninst in the + # TODO: test_force_uninstall_and_reinstall_by_hash` test. + + # TODO: Is the extra "readability" of the version worth keeping? + # return "{0}-{1}-{2}".format(pkg.name, pkg.version, pkg.spec.dag_hash()) + + # TODO: Including the version causes some installs to fail. Specifically + # TODO: failures occur when the version of a dependent of one of the + # TODO: packages does not match the version that is installed. + # return "{0}-{1}".format(pkg.name, pkg.version) + + return pkg.name + + +install_args_docstring = """ + cache_only (bool): Fail if binary package unavailable. + dirty (bool): Don't clean the build environment before installing. + explicit (bool): True if package was explicitly installed, False + if package was implicitly installed (as a dependency). + fake (bool): Don't really build; install fake stub files instead. + force (bool): Install again, even if already installed. + install_deps (bool): Install dependencies before installing this + package + install_source (bool): By default, source is not installed, but + for debugging it might be useful to keep it around. + keep_prefix (bool): Keep install prefix on failure. By default, + destroys it. + keep_stage (bool): By default, stage is destroyed only if there + are no exceptions during build. Set to True to keep the stage + even with exceptions. + restage (bool): Force spack to restage the package source. + skip_patch (bool): Skip patch stage of build if True. + stop_at (InstallPhase): last installation phase to be executed + (or None) + tests (bool or list or set): False to run no tests, True to test + all packages, or a list of package names to run tests for some + use_cache (bool): Install from binary package, if available. + verbose (bool): Display verbose build output (by default, + suppresses it) + """ + + +class PackageInstaller(object): + ''' + Class for managing the install process for a Spack instance based on a + bottom-up DAG approach. + + This installer can coordinate concurrent batch and interactive, local + and distributed (on a shared file system) builds for the same Spack + instance. + ''' + + def __init__(self, pkg): + """ + Initialize and set up the build specs. + + Args: + pkg (PackageBase): the package being installed, whose spec is + concrete + + Return: + (PackageInstaller) instance + """ + if not isinstance(pkg, spack.package.PackageBase): + raise ValueError("{0} must be a package".format(str(pkg))) + + if not pkg.spec.concrete: + raise ValueError("{0}: Can only install concrete packages." + .format(pkg.spec.name)) + + # Spec of the package to be built + self.pkg = pkg + + # The identifier used for the explicit package being built + self.pkg_id = package_id(pkg) + + # Priority queue of build tasks + self.build_pq = [] + + # Mapping of unique package ids to build task + self.build_tasks = {} + + # Cache of package locks for failed packages, keyed on package's ids + self.failed = {} + + # Cache the PID for distributed build messaging + self.pid = os.getpid() + + # Cache of installed packages' unique ids + self.installed = set() + + # Data store layout + self.layout = spack.store.layout + + # Locks on specs being built, keyed on the package's unique id + self.locks = {} + + def __repr__(self): + """Returns a formal representation of the package installer.""" + rep = '{0}('.format(self.__class__.__name__) + for attr, value in self.__dict__.items(): + rep += '{0}={1}, '.format(attr, value.__repr__()) + return '{0})'.format(rep.strip(', ')) + + def __str__(self): + """Returns a printable version of the package installer.""" + tasks = '#tasks={0}'.format(len(self.build_tasks)) + failed = 'failed ({0}) = {1}'.format(len(self.failed), self.failed) + installed = 'installed ({0}) = {1}'.format( + len(self.installed), self.installed) + return '{0} ({1}): {2}; {3}; {4}'.format( + self.pkg_id, self.pid, tasks, installed, failed) + + def _add_bootstrap_compilers(self, pkg): + """ + Add bootstrap compilers and dependencies to the build queue. + + Args: + pkg (PackageBase): the package with possible compiler dependencies + """ + packages = _packages_needed_to_bootstrap_compiler(pkg) + for (comp_pkg, is_compiler) in packages: + if package_id(comp_pkg) not in self.build_tasks: + self._push_task(comp_pkg, is_compiler, 0, 0, STATUS_ADDED) + + def _prepare_for_install(self, task, keep_prefix, keep_stage, + restage=False): + """ + Check the database and leftover installation directories/files and + prepare for a new install attempt for an uninstalled package. + + Preparation includes cleaning up installation and stage directories + and ensuring the database is up-to-date. + + Args: + task (BuildTask): the build task whose associated package is + being checked + keep_prefix (bool): ``True`` if the prefix is to be kept on + failure, otherwise ``False`` + keep_stage (bool): ``True`` if the stage is to be kept even if + there are exceptions, otherwise ``False`` + restage (bool): ``True`` if forcing Spack to restage the package + source, otherwise ``False`` + """ + # Make sure the package is ready to be locally installed. + self._ensure_install_ready(task.pkg) + + # Skip file system operations if we've already gone through them for + # this spec. + if task.pkg_id in self.installed: + # Already determined the spec has been installed + return + + # Determine if the spec is flagged as installed in the database + try: + rec = spack.store.db.get_record(task.pkg.spec) + installed_in_db = rec.installed if rec else False + except KeyError: + # KeyError is raised if there is no matching spec in the database + # (versus no matching specs that are installed). + rec = None + installed_in_db = False + + # Make sure the installation directory is in the desired state + # for uninstalled specs. + partial = False + if not installed_in_db and os.path.isdir(task.pkg.spec.prefix): + if not keep_prefix: + task.pkg.remove_prefix() + else: + tty.debug('{0} is partially installed' + .format(task.pkg_id)) + partial = True + + # Destroy the stage for a locally installed, non-DIYStage, package + if restage and task.pkg.stage.managed_by_spack: + task.pkg.stage.destroy() + + if not partial and self.layout.check_installed(task.pkg.spec): + self._update_installed(task) + + # Only update the explicit entry once for the explicit package + if task.pkg_id == self.pkg_id: + _update_explicit_entry_in_db(task.pkg, rec, True) + + # In case the stage directory has already been created, this + # check ensures it is removed after we checked that the spec is + # installed. + if not keep_stage: + task.pkg.stage.destroy() + + def _check_last_phase(self, **kwargs): + """ + Ensures the package being installed has a valid last phase before + proceeding with the installation. + + The ``stop_at`` argument is removed from the installation arguments. + + Args: + kwargs: + ``stop_at``': last installation phase to be executed (or None) + """ + self.pkg.last_phase = kwargs.pop('stop_at', None) + if self.pkg.last_phase is not None and \ + self.pkg.last_phase not in self.pkg.phases: + tty.die('\'{0}\' is not an allowed phase for package {1}' + .format(self.pkg.last_phase, self.pkg.name)) + + def _cleanup_all_tasks(self): + """Cleanup all build tasks to include releasing their locks.""" + for pkg_id in self.locks: + self._release_lock(pkg_id) + + for pkg_id in self.failed: + self._cleanup_failed(pkg_id) + + ids = list(self.build_tasks) + for pkg_id in ids: + try: + self._remove_task(pkg_id) + except Exception: + pass + + def _cleanup_failed(self, pkg_id): + """ + Cleanup any failed markers for the package + + Args: + pkg_id (str): identifier for the failed package + """ + lock = self.failed.get(pkg_id, None) + if lock is not None: + err = "{0} exception when removing failure mark for {1}: {2}" + msg = 'Removing failure mark on {0}' + try: + tty.verbose(msg.format(pkg_id)) + lock.release_write() + except Exception as exc: + tty.warn(err.format(exc.__class__.__name__, pkg_id, str(exc))) + + def _cleanup_task(self, pkg): + """ + Cleanup the build task for the spec + + Args: + pkg (PackageBase): the package being installed + """ + self._remove_task(package_id(pkg)) + + # Ensure we have a read lock to prevent others from uninstalling the + # spec during our installation. + self._ensure_locked('read', pkg) + + def _ensure_install_ready(self, pkg): + """ + Ensure the package is ready to install locally, which includes + already locked. + + Args: + pkg (PackageBase): the package being locally installed + """ + pkg_id = package_id(pkg) + pre = "{0} cannot be installed locally:".format(pkg_id) + + # External packages cannot be installed locally. + if pkg.spec.external: + raise ExternalPackageError('{0} {1}'.format(pre, 'is external')) + + # Upstream packages cannot be installed locally. + if pkg.installed_upstream: + raise UpstreamPackageError('{0} {1}'.format(pre, 'is upstream')) + + # The package must have a prefix lock at this stage. + if pkg_id not in self.locks: + raise InstallLockError('{0} {1}'.format(pre, 'not locked')) + + def _ensure_locked(self, lock_type, pkg): + """ + Add a prefix lock of the specified type for the package spec + + If the lock exists, then adjust accordingly. That is, read locks + will be upgraded to write locks if a write lock is requested and + write locks will be downgraded to read locks if a read lock is + requested. + + The lock timeout for write locks is deliberately near zero seconds in + order to ensure the current process proceeds as quickly as possible to + the next spec. + + Args: + lock_type (str): 'read' for a read lock, 'write' for a write lock + pkg (PackageBase): the package whose spec is being installed + + Return: + (lock_type, lock) tuple where lock will be None if it could not + be obtained + """ + assert lock_type in ['read', 'write'], \ + '"{0}" is not a supported package management lock type' \ + .format(lock_type) + + pkg_id = package_id(pkg) + ltype, lock = self.locks.get(pkg_id, (lock_type, None)) + if lock and ltype == lock_type: + return ltype, lock + + desc = '{0} lock'.format(lock_type) + msg = '{0} a {1} on {2} with timeout {3}' + err = 'Failed to {0} a {1} for {2} due to {3}: {4}' + + if lock_type == 'read': + # Wait until the other process finishes if there are no more + # build tasks with priority 0 (i.e., with no uninstalled + # dependencies). + no_p0 = len(self.build_tasks) == 0 or not self._next_is_pri0() + timeout = None if no_p0 else 3 + else: + timeout = 1e-9 # Near 0 to iterate through install specs quickly + + try: + if lock is None: + tty.debug(msg.format('Acquiring', desc, pkg_id, timeout)) + op = 'acquire' + lock = spack.store.db.prefix_lock(pkg.spec, timeout) + if timeout != lock.default_timeout: + tty.warn('Expected prefix lock timeout {0}, not {1}' + .format(timeout, lock.default_timeout)) + if lock_type == 'read': + lock.acquire_read() + else: + lock.acquire_write() + + elif lock_type == 'read': # write -> read + # Only get here if the current lock is a write lock, which + # must be downgraded to be a read lock + # Retain the original lock timeout, which is in the lock's + # default_timeout setting. + tty.debug(msg.format('Downgrading to', desc, pkg_id, + lock.default_timeout)) + op = 'downgrade to' + lock.downgrade_write_to_read() + + else: # read -> write + # Only get here if the current lock is a read lock, which + # must be upgraded to be a write lock + tty.debug(msg.format('Upgrading to', desc, pkg_id, timeout)) + op = 'upgrade to' + lock.upgrade_read_to_write(timeout) + tty.verbose('{0} is now {1} locked'.format(pkg_id, lock_type)) + + except (lk.LockDowngradeError, lk.LockTimeoutError) as exc: + tty.debug(err.format(op, desc, pkg_id, exc.__class__.__name__, + str(exc))) + lock = None + + except (Exception, KeyboardInterrupt, SystemExit) as exc: + tty.error(err.format(op, desc, pkg_id, exc.__class__.__name__, + str(exc))) + self._cleanup_all_tasks() + raise + + self.locks[pkg_id] = (lock_type, lock) + return self.locks[pkg_id] + + def _init_queue(self, install_deps, install_package): + """ + Initialize the build task priority queue and spec state. + + Args: + install_deps (bool): ``True`` if installing package dependencies, + otherwise ``False`` + install_package (bool): ``True`` if installing the package, + otherwise ``False`` + """ + tty.debug('Initializing the build queue for {0}'.format(self.pkg.name)) + install_compilers = spack.config.get( + 'config:install_missing_compilers', False) + + if install_deps: + for dep in self.spec.traverse(order='post', root=False): + dep_pkg = dep.package + + # First push any missing compilers (if requested) + if install_compilers: + self._add_bootstrap_compilers(dep_pkg) + + if package_id(dep_pkg) not in self.build_tasks: + self._push_task(dep_pkg, False, 0, 0, STATUS_ADDED) + + # Clear any persistent failure markings _unless_ they are + # associated with another process in this parallel build + # of the spec. + spack.store.db.clear_failure(dep, force=False) + + # Push any missing compilers (if requested) as part of the + # package dependencies. + if install_compilers: + self._add_bootstrap_compilers(self.pkg) + + if install_package and self.pkg_id not in self.build_tasks: + # Be sure to clear any previous failure + spack.store.db.clear_failure(self.pkg.spec, force=True) + + # Now add the package itself, if appropriate + self._push_task(self.pkg, False, 0, 0, STATUS_ADDED) + + def _install_task(self, task, **kwargs): + """ + Perform the installation of the requested spec and/or dependency + represented by the build task. + + Args: + task (BuildTask): the installation build task for a package""" + + cache_only = kwargs.get('cache_only', False) + dirty = kwargs.get('dirty', False) + fake = kwargs.get('fake', False) + install_source = kwargs.get('install_source', False) + keep_stage = kwargs.get('keep_stage', False) + skip_patch = kwargs.get('skip_patch', False) + tests = kwargs.get('tests', False) + use_cache = kwargs.get('use_cache', True) + verbose = kwargs.get('verbose', False) + + pkg = task.pkg + pkg_id = package_id(pkg) + explicit = pkg_id == self.pkg_id + + tty.msg(install_msg(pkg_id, self.pid)) + task.start = task.start or time.time() + task.status = STATUS_INSTALLING + + # Use the binary cache if requested + if use_cache and _install_from_cache(pkg, cache_only, explicit): + self._update_installed(task) + return + + pkg.run_tests = (tests is True or tests and pkg.name in tests) + + pre = '{0}: {1}:'.format(self.pid, pkg.name) + + def build_process(): + """ + This function implements the process forked for each build. + + It has its own process and python module space set up by + build_environment.fork(). + + This function's return value is returned to the parent process. + """ + start_time = time.time() + if not fake: + if not skip_patch: + pkg.do_patch() + else: + pkg.do_stage() + + pkg_id = package_id(pkg) + tty.msg('{0} Building {1} [{2}]' + .format(pre, pkg_id, pkg.build_system_class)) + + # get verbosity from do_install() parameter or saved value + echo = verbose + if spack.package.PackageBase._verbose is not None: + echo = spack.package.PackageBase._verbose + + pkg.stage.keep = keep_stage + + # parent process already has a prefix write lock + with pkg.stage: + # Run the pre-install hook in the child process after + # the directory is created. + spack.hooks.pre_install(pkg.spec) + if fake: + _do_fake_install(pkg) + else: + source_path = pkg.stage.source_path + if install_source and os.path.isdir(source_path): + src_target = os.path.join(pkg.spec.prefix, 'share', + pkg.name, 'src') + tty.msg('{0} Copying source to {1}' + .format(pre, src_target)) + install_tree(pkg.stage.source_path, src_target) + + # Do the real install in the source directory. + with working_dir(pkg.stage.source_path): + # Save the build environment in a file before building. + dump_environment(pkg.env_path) + + # cache debug settings + debug_enabled = tty.is_debug() + + # Spawn a daemon that reads from a pipe and redirects + # everything to log_path + with log_output(pkg.log_path, echo, True) as logger: + for phase_name, phase_attr in zip( + pkg.phases, pkg._InstallPhase_phases): + + with logger.force_echo(): + inner_debug = tty.is_debug() + tty.set_debug(debug_enabled) + tty.msg("{0} Executing phase: '{1}'" + .format(pre, phase_name)) + tty.set_debug(inner_debug) + + # Redirect stdout and stderr to daemon pipe + phase = getattr(pkg, phase_attr) + phase(pkg.spec, pkg.prefix) + + echo = logger.echo + log(pkg) + + # Run post install hooks before build stage is removed. + spack.hooks.post_install(pkg.spec) + + # Stop the timer + pkg._total_time = time.time() - start_time + build_time = pkg._total_time - pkg._fetch_time + + tty.msg('{0} Successfully installed {1}' + .format(pre, pkg_id), + 'Fetch: {0}. Build: {1}. Total: {2}.' + .format(_hms(pkg._fetch_time), _hms(build_time), + _hms(pkg._total_time))) + _print_installed_pkg(pkg.prefix) + + # preserve verbosity across runs + return echo + + # hook that allows tests to inspect the Package before installation + # see unit_test_check() docs. + if not pkg.unit_test_check(): + return + + try: + self._setup_install_dir(pkg) + + # Fork a child to do the actual installation. + # Preserve verbosity settings across installs. + spack.package.PackageBase._verbose = spack.build_environment.fork( + pkg, build_process, dirty=dirty, fake=fake) + + # Note: PARENT of the build process adds the new package to + # the database, so that we don't need to re-read from file. + spack.store.db.add(pkg.spec, spack.store.layout, + explicit=explicit) + + # If a compiler, ensure it is added to the configuration + if task.compiler: + spack.compilers.add_compilers_to_config( + spack.compilers.find_compilers([pkg.spec.prefix])) + + except StopIteration as e: + # A StopIteration exception means that do_install was asked to + # stop early from clients. + tty.msg('{0} {1}'.format(self.pid, e.message)) + tty.msg('Package stage directory : {0}' + .format(pkg.stage.source_path)) + + _install_task.__doc__ += install_args_docstring + + def _next_is_pri0(self): + """ + Determine if the next build task has priority 0 + + Return: + True if it does, False otherwise + """ + # Leverage the fact that the first entry in the queue is the next + # one that will be processed + task = self.build_pq[0][1] + return task.priority == 0 + + def _pop_task(self): + """ + Remove and return the lowest priority build task. + + Source: Variant of function at docs.python.org/2/library/heapq.html + """ + while self.build_pq: + task = heapq.heappop(self.build_pq)[1] + if task.status != STATUS_REMOVED: + del self.build_tasks[task.pkg_id] + task.status = STATUS_DEQUEUED + return task + return None + + def _push_task(self, pkg, compiler, start, attempts, status): + """ + Create and push (or queue) a build task for the package. + + Source: Customization of "add_task" function at + docs.python.org/2/library/heapq.html + """ + msg = "{0} a build task for {1} with status '{2}'" + pkg_id = package_id(pkg) + + # Ensure do not (re-)queue installed or failed packages. + assert pkg_id not in self.installed + assert pkg_id not in self.failed + + # Remove any associated build task since its sequence will change + self._remove_task(pkg_id) + desc = 'Queueing' if attempts == 0 else 'Requeueing' + tty.verbose(msg.format(desc, pkg_id, status)) + + # Now add the new task to the queue with a new sequence number to + # ensure it is the last entry popped with the same priority. This + # is necessary in case we are re-queueing a task whose priority + # was decremented due to the installation of one of its dependencies. + task = BuildTask(pkg, compiler, start, attempts, status, + self.installed) + self.build_tasks[pkg_id] = task + heapq.heappush(self.build_pq, (task.key, task)) + + def _release_lock(self, pkg_id): + """ + Release any lock on the package + + Args: + pkg_id (str): identifier for the package whose lock is be released + """ + if pkg_id in self.locks: + err = "{0} exception when releasing {1} lock for {2}: {3}" + msg = 'Releasing {0} lock on {1}' + ltype, lock = self.locks[pkg_id] + if lock is not None: + try: + tty.verbose(msg.format(ltype, pkg_id)) + if ltype == 'read': + lock.release_read() + else: + lock.release_write() + except Exception as exc: + tty.warn(err.format(exc.__class__.__name__, ltype, + pkg_id, str(exc))) + + def _remove_task(self, pkg_id): + """ + Mark the existing package build task as being removed and return it. + Raises KeyError if not found. + + Source: Variant of function at docs.python.org/2/library/heapq.html + + Args: + pkg_id (str): identifier for the package to be removed + """ + if pkg_id in self.build_tasks: + tty.verbose('Removing build task for {0} from list' + .format(pkg_id)) + task = self.build_tasks.pop(pkg_id) + task.status = STATUS_REMOVED + return task + else: + return None + + def _requeue_task(self, task): + """ + Requeues a task that appears to be in progress by another process. + + Args: + task (BuildTask): the installation build task for a package + """ + if task.status not in [STATUS_INSTALLED, STATUS_INSTALLING]: + tty.msg('{0} {1}'.format(install_msg(task.pkg_id, self.pid), + 'in progress by another process')) + + start = task.start or time.time() + self._push_task(task.pkg, task.compiler, start, task.attempts, + STATUS_INSTALLING) + + def _setup_install_dir(self, pkg): + """ + Create and ensure proper access controls for the install directory. + + Args: + pkg (Package): the package to be installed and built + """ + if not os.path.exists(pkg.spec.prefix): + tty.verbose('Creating the installation directory {0}' + .format(pkg.spec.prefix)) + spack.store.layout.create_install_directory(pkg.spec) + else: + # Set the proper group for the prefix + group = get_package_group(pkg.spec) + if group: + chgrp(pkg.spec.prefix, group) + + # Set the proper permissions. + # This has to be done after group because changing groups blows + # away the sticky group bit on the directory + mode = os.stat(pkg.spec.prefix).st_mode + perms = get_package_dir_permissions(pkg.spec) + if mode != perms: + os.chmod(pkg.spec.prefix, perms) + + # Ensure the metadata path exists as well + mkdirp(spack.store.layout.metadata_path(pkg.spec), mode=perms) + + def _update_failed(self, task, mark=False, exc=None): + """ + Update the task and transitive dependents as failed; optionally mark + externally as failed; and remove associated build tasks. + + Args: + task (BuildTask): the build task for the failed package + mark (bool): ``True`` if the package and its dependencies are to + be marked as "failed", otherwise, ``False`` + exc (Exception): optional exception if associated with the failure + """ + pkg_id = task.pkg_id + err = '' if exc is None else ': {0}'.format(str(exc)) + tty.debug('Flagging {0} as failed{1}'.format(pkg_id, err)) + if mark: + self.failed[pkg_id] = spack.store.db.mark_failed(task.spec) + else: + self.failed[pkg_id] = None + task.status = STATUS_FAILED + + for dep_id in task.dependents: + if dep_id in self.build_tasks: + tty.warn('Skipping build of {0} since {1} failed' + .format(dep_id, pkg_id)) + # Ensure the dependent's uninstalled dependents are + # up-to-date and their build tasks removed. + dep_task = self.build_tasks[dep_id] + self._update_failed(dep_task, mark) + self._remove_task(dep_id) + else: + tty.verbose('No build task for {0} to skip since {1} failed' + .format(dep_id, pkg_id)) + + def _update_installed(self, task): + """ + Mark the task's spec as installed and update the dependencies of its + dependents. + + Args: + task (BuildTask): the build task for the installed package + """ + pkg_id = task.pkg_id + tty.debug('Flagging {0} as installed'.format(pkg_id)) + + self.installed.add(pkg_id) + task.status = STATUS_INSTALLED + for dep_id in task.dependents: + tty.debug('Removing {0} from {1}\'s uninstalled dependencies.' + .format(pkg_id, dep_id)) + if dep_id in self.build_tasks: + # Ensure the dependent's uninstalled dependencies are + # up-to-date. This will require requeueing the task. + dep_task = self.build_tasks[dep_id] + dep_task.flag_installed(self.installed) + self._push_task(dep_task.pkg, dep_task.compiler, + dep_task.start, dep_task.attempts, + dep_task.status) + else: + tty.debug('{0} has no build task to update for {1}\'s success' + .format(dep_id, pkg_id)) + + def install(self, **kwargs): + """ + Install the package and/or associated dependencies. + + Args:""" + + install_deps = kwargs.get('install_deps', True) + keep_prefix = kwargs.get('keep_prefix', False) + keep_stage = kwargs.get('keep_stage', False) + restage = kwargs.get('restage', False) + + # install_package defaults True and is popped so that dependencies are + # always installed regardless of whether the root was installed + install_package = kwargs.pop('install_package', True) + + # Ensure not attempting to perform an installation when user didn't + # want to go that far. + self._check_last_phase(**kwargs) + + # Skip out early if the spec is not being installed locally (i.e., if + # external or upstream). + not_local = _handle_external_and_upstream(self.pkg, True) + if not_local: + return + + # Initialize the build task queue + self._init_queue(install_deps, install_package) + + # Proceed with the installation + while self.build_pq: + task = self._pop_task() + if task is None: + continue + + pkg, spec = task.pkg, task.pkg.spec + pkg_id = package_id(pkg) + tty.verbose('Processing {0}: task={1}'.format(pkg_id, task)) + + # Ensure that the current spec has NO uninstalled dependencies, + # which is assumed to be reflected directly in its priority. + # + # If the spec has uninstalled dependencies, then there must be + # a bug in the code (e.g., priority queue or uninstalled + # dependencies handling). So terminate under the assumption that + # all subsequent tasks will have non-zero priorities or may be + # dependencies of this task. + if task.priority != 0: + tty.error('Detected uninstalled dependencies for {0}: {1}' + .format(pkg_id, task.uninstalled_deps)) + dep_str = 'dependencies' if task.priority > 1 else 'dependency' + raise InstallError( + 'Cannot proceed with {0}: {1} uninstalled {2}: {3}' + .format(pkg_id, task.priority, dep_str, + ','.join(task.uninstalled_deps))) + + # Skip the installation if the spec is not being installed locally + # (i.e., if external or upstream) BUT flag it as installed since + # some package likely depends on it. + if pkg_id != self.pkg_id: + not_local = _handle_external_and_upstream(pkg, False) + if not_local: + self._update_installed(task) + _print_installed_pkg(pkg.prefix) + continue + + # Flag a failed spec. Do not need an (install) prefix lock since + # assume using a separate (failed) prefix lock file. + if pkg_id in self.failed or spack.store.db.prefix_failed(spec): + tty.warn('{0} failed to install'.format(pkg_id)) + self._update_failed(task) + continue + + # Attempt to get a write lock. If we can't get the lock then + # another process is likely (un)installing the spec or has + # determined the spec has already been installed (though the + # other process may be hung). + ltype, lock = self._ensure_locked('write', pkg) + if lock is None: + # Attempt to get a read lock instead. If this fails then + # another process has a write lock so must be (un)installing + # the spec (or that process is hung). + ltype, lock = self._ensure_locked('read', pkg) + + # Requeue the spec if we cannot get at least a read lock so we + # can check the status presumably established by another process + # -- failed, installed, or uninstalled -- on the next pass. + if lock is None: + self._requeue_task(task) + continue + + # Determine state of installation artifacts and adjust accordingly. + self._prepare_for_install(task, keep_prefix, keep_stage, + restage) + + # Flag an already installed package + if pkg_id in self.installed: + # Downgrade to a read lock to preclude other processes from + # uninstalling the package until we're done installing its + # dependents. + ltype, lock = self._ensure_locked('read', pkg) + if lock is not None: + self._update_installed(task) + _print_installed_pkg(pkg.prefix) + else: + # At this point we've failed to get a write or a read + # lock, which means another process has taken a write + # lock between our releasing the write and acquiring the + # read. + # + # Requeue the task so we can re-check the status + # established by the other process -- failed, installed, + # or uninstalled -- on the next pass. + self.installed.remove(pkg_id) + self._requeue_task(task) + continue + + # Having a read lock on an uninstalled pkg may mean another + # process completed an uninstall of the software between the + # time we failed to acquire the write lock and the time we + # took the read lock. + # + # Requeue the task so we can check the status presumably + # established by the other process -- failed, installed, or + # uninstalled -- on the next pass. + if ltype == 'read': + self._requeue_task(task) + continue + + # Proceed with the installation since we have an exclusive write + # lock on the package. + try: + self._install_task(task, **kwargs) + self._update_installed(task) + + # If we installed then we should keep the prefix + last_phase = getattr(pkg, 'last_phase', None) + keep_prefix = last_phase is None or keep_prefix + + except spack.directory_layout.InstallDirectoryAlreadyExistsError: + tty.debug("Keeping existing install prefix in place.") + self._update_installed(task) + raise + + except (Exception, KeyboardInterrupt, SystemExit) as exc: + # Assuming best effort installs so suppress the exception and + # mark as a failure UNLESS this is the explicit package. + err = 'Failed to install {0} due to {1}: {2}' + tty.error(err.format(pkg.name, exc.__class__.__name__, + str(exc))) + self._update_failed(task, True, exc) + + if pkg_id == self.pkg_id: + raise + + finally: + # Remove the install prefix if anything went wrong during + # install. + if not keep_prefix: + pkg.remove_prefix() + + # The subprocess *may* have removed the build stage. Mark it + # not created so that the next time pkg.stage is invoked, we + # check the filesystem for it. + pkg.stage.created = False + + # Perform basic task cleanup for the installed spec to + # include downgrading the write to a read lock + self._cleanup_task(pkg) + + # Cleanup, which includes releasing all of the read locks + self._cleanup_all_tasks() + + # Ensure we properly report if the original/explicit pkg is failed + if self.pkg_id in self.failed: + msg = ('Installation of {0} failed. Review log for details' + .format(self.pkg_id)) + raise InstallError(msg) + + install.__doc__ += install_args_docstring + + # Helper method to "smooth" the transition from the + # spack.package.PackageBase class + @property + def spec(self): + """The specification associated with the package.""" + return self.pkg.spec + + +class BuildTask(object): + """Class for representing the build task for a package.""" + + def __init__(self, pkg, compiler, start, attempts, status, installed): + """ + Instantiate a build task for a package. + + Args: + pkg (Package): the package to be installed and built + compiler (bool): ``True`` if the task is for a bootstrap compiler, + otherwise, ``False`` + start (int): the initial start time for the package, in seconds + attempts (int): the number of attempts to install the package + status (str): the installation status + installed (list of str): the identifiers of packages that have + been installed so far + """ + + # Ensure dealing with a package that has a concrete spec + if not isinstance(pkg, spack.package.PackageBase): + raise ValueError("{0} must be a package".format(str(pkg))) + + self.pkg = pkg + if not self.pkg.spec.concrete: + raise ValueError("{0} must have a concrete spec" + .format(self.pkg.name)) + + # The "unique" identifier for the task's package + self.pkg_id = package_id(self.pkg) + + # Initialize the status to an active state. The status is used to + # ensure priority queue invariants when tasks are "removed" from the + # queue. + if status == STATUS_REMOVED: + msg = "Cannot create a build task for {0} with status '{1}'" + raise InstallError(msg.format(self.pkg_id, status)) + + self.status = status + + # Package is associated with a bootstrap compiler + self.compiler = compiler + + # The initial start time for processing the spec + self.start = start + + # Number of times the task has been queued + self.attempts = attempts + 1 + + # Set of dependents + self.dependents = set(package_id(d.package) for d + in self.spec.dependents()) + + # Set of dependencies + # + # Be consistent wrt use of dependents and dependencies. That is, + # if use traverse for transitive dependencies, then must remove + # transitive dependents on failure. + self.dependencies = set(package_id(d.package) for d in + self.spec.dependencies() if + package_id(d.package) != self.pkg_id) + + # List of uninstalled dependencies, which is used to establish + # the priority of the build task. + # + self.uninstalled_deps = set(pkg_id for pkg_id in self.dependencies if + pkg_id not in installed) + + # Ensure the task gets a unique sequence number to preserve the + # order in which it was added. + self.sequence = next(_counter) + + def __repr__(self): + """Returns a formal representation of the build task.""" + rep = '{0}('.format(self.__class__.__name__) + for attr, value in self.__dict__.items(): + rep += '{0}={1}, '.format(attr, value.__repr__()) + return '{0})'.format(rep.strip(', ')) + + def __str__(self): + """Returns a printable version of the build task.""" + dependencies = '#dependencies={0}'.format(len(self.dependencies)) + return ('priority={0}, status={1}, start={2}, {3}' + .format(self.priority, self.status, self.start, dependencies)) + + def flag_installed(self, installed): + """ + Ensure the dependency is not considered to still be uninstalled. + + Args: + installed (list of str): the identifiers of packages that have + been installed so far + """ + now_installed = self.uninstalled_deps & set(installed) + for pkg_id in now_installed: + self.uninstalled_deps.remove(pkg_id) + tty.debug('{0}: Removed {1} from uninstalled deps list: {2}' + .format(self.pkg_id, pkg_id, self.uninstalled_deps)) + + @property + def key(self): + """The key is the tuple (# uninstalled dependencies, sequence).""" + return (self.priority, self.sequence) + + @property + def priority(self): + """The priority is based on the remaining uninstalled dependencies.""" + return len(self.uninstalled_deps) + + @property + def spec(self): + """The specification associated with the package.""" + return self.pkg.spec + + +class InstallError(spack.error.SpackError): + """Raised when something goes wrong during install or uninstall.""" + + def __init__(self, message, long_msg=None): + super(InstallError, self).__init__(message, long_msg) + + +class ExternalPackageError(InstallError): + """Raised by install() when a package is only for external use.""" + + +class InstallLockError(InstallError): + """Raised during install when something goes wrong with package locking.""" + + +class UpstreamPackageError(InstallError): + """Raised during install when something goes wrong with an upstream + package.""" diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 0821b4e6997..37345e8bc25 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -550,9 +550,11 @@ def __call__(self, *argv, **kwargs): tty.debug(e) self.error = e if fail_on_error: + self._log_command_output(out) raise if fail_on_error and self.returncode not in (None, 0): + self._log_command_output(out) raise SpackCommandError( "Command exited with code %d: %s(%s)" % ( self.returncode, self.command_name, @@ -560,6 +562,13 @@ def __call__(self, *argv, **kwargs): return out.getvalue() + def _log_command_output(self, out): + if tty.is_verbose(): + fmt = self.command_name + ': {0}' + for ln in out.getvalue().split('\n'): + if len(ln) > 0: + tty.verbose(fmt.format(ln.replace('==> ', ''))) + def _profile_wrapper(command, parser, args, unknown_args): import cProfile diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index d67c017a704..d123f58cdf8 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -14,7 +14,6 @@ import contextlib import copy import functools -import glob import hashlib import inspect import os @@ -48,21 +47,16 @@ import spack.util.environment import spack.util.web import spack.multimethod -import spack.binary_distribution as binary_distribution -from llnl.util.filesystem import mkdirp, touch, chgrp -from llnl.util.filesystem import working_dir, install_tree, install +from llnl.util.filesystem import mkdirp, touch, working_dir from llnl.util.lang import memoized from llnl.util.link_tree import LinkTree -from llnl.util.tty.log import log_output -from llnl.util.tty.color import colorize from spack.filesystem_view import YamlFilesystemView -from spack.util.executable import which +from spack.installer import \ + install_args_docstring, PackageInstaller, InstallError from spack.stage import stage_prefix, Stage, ResourceStage, StageComposite -from spack.util.environment import dump_environment from spack.util.package_hash import package_hash from spack.version import Version -from spack.package_prefs import get_package_dir_permissions, get_package_group """Allowed URL schemes for spack packages.""" _ALLOWED_URL_SCHEMES = ["http", "https", "ftp", "file", "git"] @@ -430,10 +424,18 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)): # These are default values for instance variables. # + #: A list or set of build time test functions to be called when tests + #: are executed or 'None' if there are no such test functions. + build_time_test_callbacks = None + #: Most Spack packages are used to install source or binary code while #: those that do not can be used to install a set of other Spack packages. has_code = True + #: A list or set of install time test functions to be called when tests + #: are executed or 'None' if there are no such test functions. + install_time_test_callbacks = None + #: By default we build in parallel. Subclasses can override this. parallel = True @@ -1283,41 +1285,6 @@ def content_hash(self, content=None): hashlib.sha256(bytes().join( sorted(hash_content))).digest()).lower() - def do_fake_install(self): - """Make a fake install directory containing fake executables, - headers, and libraries.""" - - command = self.name - header = self.name - library = self.name - - # Avoid double 'lib' for packages whose names already start with lib - if not self.name.startswith('lib'): - library = 'lib' + library - - dso_suffix = '.dylib' if sys.platform == 'darwin' else '.so' - chmod = which('chmod') - - # Install fake command - mkdirp(self.prefix.bin) - touch(os.path.join(self.prefix.bin, command)) - chmod('+x', os.path.join(self.prefix.bin, command)) - - # Install fake header file - mkdirp(self.prefix.include) - touch(os.path.join(self.prefix.include, header + '.h')) - - # Install fake shared and static libraries - mkdirp(self.prefix.lib) - for suffix in [dso_suffix, '.a']: - touch(os.path.join(self.prefix.lib, library + suffix)) - - # Install fake man page - mkdirp(self.prefix.man.man1) - - packages_dir = spack.store.layout.build_packages_path(self.spec) - dump_packages(self.spec, packages_dir) - def _has_make_target(self, target): """Checks to see if 'target' is a valid target in a Makefile. @@ -1461,382 +1428,17 @@ def _stage_and_write_lock(self): with spack.store.db.prefix_write_lock(self.spec): yield - def _process_external_package(self, explicit): - """Helper function to process external packages. - - Runs post install hooks and registers the package in the DB. - - Args: - explicit (bool): if the package was requested explicitly by - the user, False if it was pulled in as a dependency of an - explicit package. - """ - if self.spec.external_module: - message = '{s.name}@{s.version} : has external module in {module}' - tty.msg(message.format(s=self, module=self.spec.external_module)) - message = '{s.name}@{s.version} : is actually installed in {path}' - tty.msg(message.format(s=self, path=self.spec.external_path)) - else: - message = '{s.name}@{s.version} : externally installed in {path}' - tty.msg(message.format(s=self, path=self.spec.external_path)) - try: - # Check if the package was already registered in the DB - # If this is the case, then just exit - rec = spack.store.db.get_record(self.spec) - message = '{s.name}@{s.version} : already registered in DB' - tty.msg(message.format(s=self)) - # Update the value of rec.explicit if it is necessary - self._update_explicit_entry_in_db(rec, explicit) - - except KeyError: - # If not register it and generate the module file - # For external packages we just need to run - # post-install hooks to generate module files - message = '{s.name}@{s.version} : generating module file' - tty.msg(message.format(s=self)) - spack.hooks.post_install(self.spec) - # Add to the DB - message = '{s.name}@{s.version} : registering into DB' - tty.msg(message.format(s=self)) - spack.store.db.add(self.spec, None, explicit=explicit) - - def _update_explicit_entry_in_db(self, rec, explicit): - if explicit and not rec.explicit: - with spack.store.db.write_transaction(): - rec = spack.store.db.get_record(self.spec) - rec.explicit = True - message = '{s.name}@{s.version} : marking the package explicit' - tty.msg(message.format(s=self)) - - def try_install_from_binary_cache(self, explicit, unsigned=False): - tty.msg('Searching for binary cache of %s' % self.name) - specs = binary_distribution.get_spec(spec=self.spec, - force=False) - binary_spec = spack.spec.Spec.from_dict(self.spec.to_dict()) - binary_spec._mark_concrete() - if binary_spec not in specs: - return False - tarball = binary_distribution.download_tarball(binary_spec) - # see #10063 : install from source if tarball doesn't exist - if tarball is None: - tty.msg('%s exist in binary cache but with different hash' % - self.name) - return False - tty.msg('Installing %s from binary cache' % self.name) - binary_distribution.extract_tarball( - binary_spec, tarball, allow_root=False, - unsigned=unsigned, force=False) - self.installed_from_binary_cache = True - spack.store.db.add( - self.spec, spack.store.layout, explicit=explicit) - return True - - def bootstrap_compiler(self, **kwargs): - """Called by do_install to setup ensure Spack has the right compiler. - - Checks Spack's compiler configuration for a compiler that - matches the package spec. If none are configured, installs and - adds to the compiler configuration the compiler matching the - CompilerSpec object.""" - compilers = spack.compilers.compilers_for_spec( - self.spec.compiler, - arch_spec=self.spec.architecture - ) - if not compilers: - dep = spack.compilers.pkg_spec_for_compiler(self.spec.compiler) - dep.architecture = self.spec.architecture - # concrete CompilerSpec has less info than concrete Spec - # concretize as Spec to add that information - dep.concretize() - dep.package.do_install(**kwargs) - spack.compilers.add_compilers_to_config( - spack.compilers.find_compilers([dep.prefix]) - ) - def do_install(self, **kwargs): - """Called by commands to install a package and its dependencies. + """Called by commands to install a package and or its dependencies. Package implementations should override install() to describe their build process. - Args: - keep_prefix (bool): Keep install prefix on failure. By default, - destroys it. - keep_stage (bool): By default, stage is destroyed only if there - are no exceptions during build. Set to True to keep the stage - even with exceptions. - install_source (bool): By default, source is not installed, but - for debugging it might be useful to keep it around. - install_deps (bool): Install dependencies before installing this - package - skip_patch (bool): Skip patch stage of build if True. - verbose (bool): Display verbose build output (by default, - suppresses it) - fake (bool): Don't really build; install fake stub files instead. - explicit (bool): True if package was explicitly installed, False - if package was implicitly installed (as a dependency). - tests (bool or list or set): False to run no tests, True to test - all packages, or a list of package names to run tests for some - dirty (bool): Don't clean the build environment before installing. - restage (bool): Force spack to restage the package source. - force (bool): Install again, even if already installed. - use_cache (bool): Install from binary package, if available. - cache_only (bool): Fail if binary package unavailable. - stop_at (InstallPhase): last installation phase to be executed - (or None) - """ - if not self.spec.concrete: - raise ValueError("Can only install concrete packages: %s." - % self.spec.name) + Args:""" + builder = PackageInstaller(self) + builder.install(**kwargs) - keep_prefix = kwargs.get('keep_prefix', False) - keep_stage = kwargs.get('keep_stage', False) - install_source = kwargs.get('install_source', False) - install_deps = kwargs.get('install_deps', True) - skip_patch = kwargs.get('skip_patch', False) - verbose = kwargs.get('verbose', False) - fake = kwargs.get('fake', False) - explicit = kwargs.get('explicit', False) - tests = kwargs.get('tests', False) - dirty = kwargs.get('dirty', False) - restage = kwargs.get('restage', False) - - # install_self defaults True and is popped so that dependencies are - # always installed regardless of whether the root was installed - install_self = kwargs.pop('install_package', True) - # explicit defaults False so that dependents are implicit regardless - # of whether their dependents are implicitly or explicitly installed. - # Spack ensures root packages of install commands are always marked to - # install explicit - explicit = kwargs.pop('explicit', False) - - # For external packages the workflow is simplified, and basically - # consists in module file generation and registration in the DB - if self.spec.external: - return self._process_external_package(explicit) - - if self.installed_upstream: - tty.msg("{0.name} is installed in an upstream Spack instance" - " at {0.prefix}".format(self)) - # Note this skips all post-install hooks. In the case of modules - # this is considered correct because we want to retrieve the - # module from the upstream Spack instance. - return - - partial = self.check_for_unfinished_installation(keep_prefix, restage) - - # Ensure package is not already installed - layout = spack.store.layout - with spack.store.db.prefix_read_lock(self.spec): - if partial: - tty.msg( - "Continuing from partial install of %s" % self.name) - elif layout.check_installed(self.spec): - msg = '{0.name} is already installed in {0.prefix}' - tty.msg(msg.format(self)) - rec = spack.store.db.get_record(self.spec) - # In case the stage directory has already been created, - # this ensures it's removed after we checked that the spec - # is installed - if keep_stage is False: - self.stage.destroy() - return self._update_explicit_entry_in_db(rec, explicit) - - self._do_install_pop_kwargs(kwargs) - - # First, install dependencies recursively. - if install_deps: - tty.debug('Installing {0} dependencies'.format(self.name)) - dep_kwargs = kwargs.copy() - dep_kwargs['explicit'] = False - dep_kwargs['install_deps'] = False - for dep in self.spec.traverse(order='post', root=False): - if spack.config.get('config:install_missing_compilers', False): - Package._install_bootstrap_compiler(dep.package, **kwargs) - dep.package.do_install(**dep_kwargs) - - # Then install the compiler if it is not already installed. - if install_deps: - Package._install_bootstrap_compiler(self, **kwargs) - - if not install_self: - return - - # Then, install the package proper - tty.msg(colorize('@*{Installing} @*g{%s}' % self.name)) - - if kwargs.get('use_cache', True): - if self.try_install_from_binary_cache( - explicit, unsigned=kwargs.get('unsigned', False)): - tty.msg('Successfully installed %s from binary cache' - % self.name) - print_pkg(self.prefix) - spack.hooks.post_install(self.spec) - return - elif kwargs.get('cache_only', False): - tty.die('No binary for %s found and cache-only specified' - % self.name) - - tty.msg('No binary for %s found: installing from source' - % self.name) - - # Set run_tests flag before starting build - self.run_tests = (tests is True or - tests and self.name in tests) - - # Then install the package itself. - def build_process(): - """This implements the process forked for each build. - - Has its own process and python module space set up by - build_environment.fork(). - - This function's return value is returned to the parent process. - """ - - start_time = time.time() - if not fake: - if not skip_patch: - self.do_patch() - else: - self.do_stage() - - tty.msg( - 'Building {0} [{1}]'.format(self.name, self.build_system_class) - ) - - # get verbosity from do_install() parameter or saved value - echo = verbose - if PackageBase._verbose is not None: - echo = PackageBase._verbose - - self.stage.keep = keep_stage - with self._stage_and_write_lock(): - # Run the pre-install hook in the child process after - # the directory is created. - spack.hooks.pre_install(self.spec) - if fake: - self.do_fake_install() - else: - source_path = self.stage.source_path - if install_source and os.path.isdir(source_path): - src_target = os.path.join( - self.spec.prefix, 'share', self.name, 'src') - tty.msg('Copying source to {0}'.format(src_target)) - install_tree(self.stage.source_path, src_target) - - # Do the real install in the source directory. - with working_dir(self.stage.source_path): - # Save the build environment in a file before building. - dump_environment(self.env_path) - - # cache debug settings - debug_enabled = tty.is_debug() - - # Spawn a daemon that reads from a pipe and redirects - # everything to log_path - with log_output(self.log_path, echo, True) as logger: - for phase_name, phase_attr in zip( - self.phases, self._InstallPhase_phases): - - with logger.force_echo(): - inner_debug = tty.is_debug() - tty.set_debug(debug_enabled) - tty.msg( - "Executing phase: '%s'" % phase_name) - tty.set_debug(inner_debug) - - # Redirect stdout and stderr to daemon pipe - phase = getattr(self, phase_attr) - phase(self.spec, self.prefix) - - echo = logger.echo - self.log() - - # Run post install hooks before build stage is removed. - spack.hooks.post_install(self.spec) - - # Stop timer. - self._total_time = time.time() - start_time - build_time = self._total_time - self._fetch_time - - tty.msg("Successfully installed %s" % self.name, - "Fetch: %s. Build: %s. Total: %s." % - (_hms(self._fetch_time), _hms(build_time), - _hms(self._total_time))) - print_pkg(self.prefix) - - # preserve verbosity across runs - return echo - - # hook that allow tests to inspect this Package before installation - # see unit_test_check() docs. - if not self.unit_test_check(): - return - - try: - # Create the install prefix and fork the build process. - if not os.path.exists(self.prefix): - spack.store.layout.create_install_directory(self.spec) - else: - # Set the proper group for the prefix - group = get_package_group(self.spec) - if group: - chgrp(self.prefix, group) - # Set the proper permissions. - # This has to be done after group because changing groups blows - # away the sticky group bit on the directory - mode = os.stat(self.prefix).st_mode - perms = get_package_dir_permissions(self.spec) - if mode != perms: - os.chmod(self.prefix, perms) - - # Ensure the metadata path exists as well - mkdirp(spack.store.layout.metadata_path(self.spec), mode=perms) - - # Fork a child to do the actual installation. - # Preserve verbosity settings across installs. - PackageBase._verbose = spack.build_environment.fork( - self, build_process, dirty=dirty, fake=fake) - - # If we installed then we should keep the prefix - keep_prefix = self.last_phase is None or keep_prefix - # note: PARENT of the build process adds the new package to - # the database, so that we don't need to re-read from file. - spack.store.db.add( - self.spec, spack.store.layout, explicit=explicit - ) - except spack.directory_layout.InstallDirectoryAlreadyExistsError: - # Abort install if install directory exists. - # But do NOT remove it (you'd be overwriting someone else's stuff) - tty.warn("Keeping existing install prefix in place.") - raise - except StopIteration as e: - # A StopIteration exception means that do_install - # was asked to stop early from clients - tty.msg(e.message) - tty.msg( - 'Package stage directory : {0}'.format(self.stage.source_path) - ) - finally: - # Remove the install prefix if anything went wrong during install. - if not keep_prefix: - self.remove_prefix() - - # The subprocess *may* have removed the build stage. Mark it - # not created so that the next time self.stage is invoked, we - # check the filesystem for it. - self.stage.created = False - - @staticmethod - def _install_bootstrap_compiler(pkg, **install_kwargs): - tty.debug('Bootstrapping {0} compiler for {1}'.format( - pkg.spec.compiler, pkg.name - )) - comp_kwargs = install_kwargs.copy() - comp_kwargs['explicit'] = False - comp_kwargs['install_deps'] = True - pkg.bootstrap_compiler(**comp_kwargs) + do_install.__doc__ += install_args_docstring def unit_test_check(self): """Hook for unit tests to assert things about package internals. @@ -1855,125 +1457,6 @@ def unit_test_check(self): """ return True - def check_for_unfinished_installation( - self, keep_prefix=False, restage=False): - """Check for leftover files from partially-completed prior install to - prepare for a new install attempt. - - Options control whether these files are reused (vs. destroyed). - - Args: - keep_prefix (bool): True if the installation prefix needs to be - kept, False otherwise - restage (bool): False if the stage has to be kept, True otherwise - - Returns: - True if the prefix exists but the install is not complete, False - otherwise. - """ - if self.spec.external: - raise ExternalPackageError("Attempted to repair external spec %s" % - self.spec.name) - - with spack.store.db.prefix_write_lock(self.spec): - try: - record = spack.store.db.get_record(self.spec) - installed_in_db = record.installed if record else False - except KeyError: - installed_in_db = False - - partial = False - if not installed_in_db and os.path.isdir(self.prefix): - if not keep_prefix: - self.remove_prefix() - else: - partial = True - - if restage and self.stage.managed_by_spack: - self.stage.destroy() - - return partial - - def _do_install_pop_kwargs(self, kwargs): - """Pops kwargs from do_install before starting the installation - - Args: - kwargs: - 'stop_at': last installation phase to be executed (or None) - - """ - self.last_phase = kwargs.pop('stop_at', None) - if self.last_phase is not None and self.last_phase not in self.phases: - tty.die('\'{0}\' is not an allowed phase for package {1}' - .format(self.last_phase, self.name)) - - def log(self): - """Copy provenance into the install directory on success.""" - packages_dir = spack.store.layout.build_packages_path(self.spec) - - # Remove first if we're overwriting another build - # (can happen with spack setup) - try: - # log and env install paths are inside this - shutil.rmtree(packages_dir) - except Exception as e: - # FIXME : this potentially catches too many things... - tty.debug(e) - - # Archive the whole stdout + stderr for the package - install(self.log_path, self.install_log_path) - - # Archive the environment used for the build - install(self.env_path, self.install_env_path) - - # Finally, archive files that are specific to each package - with working_dir(self.stage.path): - errors = StringIO() - target_dir = os.path.join( - spack.store.layout.metadata_path(self.spec), - 'archived-files') - - for glob_expr in self.archive_files: - # Check that we are trying to copy things that are - # in the stage tree (not arbitrary files) - abs_expr = os.path.realpath(glob_expr) - if os.path.realpath(self.stage.path) not in abs_expr: - errors.write( - '[OUTSIDE SOURCE PATH]: {0}\n'.format(glob_expr) - ) - continue - # Now that we are sure that the path is within the correct - # folder, make it relative and check for matches - if os.path.isabs(glob_expr): - glob_expr = os.path.relpath( - glob_expr, self.stage.path - ) - files = glob.glob(glob_expr) - for f in files: - try: - target = os.path.join(target_dir, f) - # We must ensure that the directory exists before - # copying a file in - mkdirp(os.path.dirname(target)) - install(f, target) - except Exception as e: - tty.debug(e) - - # Here try to be conservative, and avoid discarding - # the whole install procedure because of copying a - # single file failed - errors.write('[FAILED TO ARCHIVE]: {0}'.format(f)) - - if errors.getvalue(): - error_file = os.path.join(target_dir, 'errors.txt') - mkdirp(target_dir) - with open(error_file, 'w') as err: - err.write(errors.getvalue()) - tty.warn('Errors occurred when archiving files.\n\t' - 'See: {0}'.format(error_file)) - - dump_packages(self.spec, packages_dir) - def sanity_check_prefix(self): """This function checks whether install succeeded.""" @@ -2539,8 +2022,6 @@ def rpath_args(self): """ return " ".join("-Wl,-rpath,%s" % p for p in self.rpath) - build_time_test_callbacks = None - @on_package_attributes(run_tests=True) def _run_default_build_time_test_callbacks(self): """Tries to call all the methods that are listed in the attribute @@ -2560,8 +2041,6 @@ def _run_default_build_time_test_callbacks(self): msg = 'RUN-TESTS: method not implemented [{0}]' tty.warn(msg.format(name)) - install_time_test_callbacks = None - @on_package_attributes(run_tests=True) def _run_default_install_time_test_callbacks(self): """Tries to call all the methods that are listed in the attribute @@ -2652,54 +2131,6 @@ def flatten_dependencies(spec, flat_dir): dep_files.merge(flat_dir + '/' + name) -def dump_packages(spec, path): - """Dump all package information for a spec and its dependencies. - - This creates a package repository within path for every - namespace in the spec DAG, and fills the repos wtih package - files and patch files for every node in the DAG. - """ - mkdirp(path) - - # Copy in package.py files from any dependencies. - # Note that we copy them in as they are in the *install* directory - # NOT as they are in the repository, because we want a snapshot of - # how *this* particular build was done. - for node in spec.traverse(deptype=all): - if node is not spec: - # Locate the dependency package in the install tree and find - # its provenance information. - source = spack.store.layout.build_packages_path(node) - source_repo_root = os.path.join(source, node.namespace) - - # There's no provenance installed for the source package. Skip it. - # User can always get something current from the builtin repo. - if not os.path.isdir(source_repo_root): - continue - - # Create a source repo and get the pkg directory out of it. - try: - source_repo = spack.repo.Repo(source_repo_root) - source_pkg_dir = source_repo.dirname_for_package_name( - node.name) - except spack.repo.RepoError: - tty.warn("Warning: Couldn't copy in provenance for %s" % - node.name) - - # Create a destination repository - dest_repo_root = os.path.join(path, node.namespace) - if not os.path.exists(dest_repo_root): - spack.repo.create_repo(dest_repo_root) - repo = spack.repo.Repo(dest_repo_root) - - # Get the location of the package in the dest repo. - dest_pkg_dir = repo.dirname_for_package_name(node.name) - if node is not spec: - install_tree(source_pkg_dir, dest_pkg_dir) - else: - spack.repo.path.dump_provenance(node, dest_pkg_dir) - - def possible_dependencies(*pkg_or_spec, **kwargs): """Get the possible dependencies of a number of packages. @@ -2729,28 +2160,6 @@ def possible_dependencies(*pkg_or_spec, **kwargs): return visited -def print_pkg(message): - """Outputs a message with a package icon.""" - from llnl.util.tty.color import cwrite - cwrite('@*g{[+]} ') - print(message) - - -def _hms(seconds): - """Convert time in seconds to hours, minutes, seconds.""" - m, s = divmod(seconds, 60) - h, m = divmod(m, 60) - - parts = [] - if h: - parts.append("%dh" % h) - if m: - parts.append("%dm" % m) - if s: - parts.append("%.2fs" % s) - return ' '.join(parts) - - class FetchError(spack.error.SpackError): """Raised when something goes wrong during fetch.""" @@ -2758,17 +2167,6 @@ def __init__(self, message, long_msg=None): super(FetchError, self).__init__(message, long_msg) -class InstallError(spack.error.SpackError): - """Raised when something goes wrong during install or uninstall.""" - - def __init__(self, message, long_msg=None): - super(InstallError, self).__init__(message, long_msg) - - -class ExternalPackageError(InstallError): - """Raised by install() when a package is only for external use.""" - - class PackageStillNeededError(InstallError): """Raised when package is still needed by another on uninstall.""" def __init__(self, spec, dependents): diff --git a/lib/spack/spack/pkgkit.py b/lib/spack/spack/pkgkit.py index a39ede3ab78..c304fb4fcaa 100644 --- a/lib/spack/spack/pkgkit.py +++ b/lib/spack/spack/pkgkit.py @@ -50,7 +50,10 @@ from spack.package import \ install_dependency_symlinks, flatten_dependencies, \ - DependencyConflictError, InstallError, ExternalPackageError + DependencyConflictError + +from spack.installer import \ + ExternalPackageError, InstallError, InstallLockError, UpstreamPackageError from spack.variant import any_combination_of, auto_or_any_combination_of from spack.variant import disjoint_sets diff --git a/lib/spack/spack/report.py b/lib/spack/spack/report.py index 04a20f36b8d..e500f9fc057 100644 --- a/lib/spack/spack/report.py +++ b/lib/spack/spack/report.py @@ -44,7 +44,8 @@ def fetch_package_log(pkg): class InfoCollector(object): - """Decorates PackageBase.do_install to collect information + """Decorates PackageInstaller._install_task, which is called by + PackageBase.do_install for each spec, to collect information on the installation of certain specs. When exiting the context this change will be rolled-back. @@ -57,8 +58,8 @@ class InfoCollector(object): specs (list of Spec): specs whose install information will be recorded """ - #: Backup of PackageBase.do_install - _backup_do_install = spack.package.PackageBase.do_install + #: Backup of PackageInstaller._install_task + _backup__install_task = spack.package.PackageInstaller._install_task def __init__(self, specs): #: Specs that will be installed @@ -108,15 +109,16 @@ def __enter__(self): } spec['packages'].append(package) - def gather_info(do_install): - """Decorates do_install to gather useful information for - a CI report. + def gather_info(_install_task): + """Decorates PackageInstaller._install_task to gather useful + information on PackageBase.do_install for a CI report. It's defined here to capture the environment and build this context as the installations proceed. """ - @functools.wraps(do_install) - def wrapper(pkg, *args, **kwargs): + @functools.wraps(_install_task) + def wrapper(installer, task, *args, **kwargs): + pkg = task.pkg # We accounted before for what is already installed installed_on_entry = pkg.installed @@ -134,7 +136,7 @@ def wrapper(pkg, *args, **kwargs): value = None try: - value = do_install(pkg, *args, **kwargs) + value = _install_task(installer, task, *args, **kwargs) package['result'] = 'success' package['stdout'] = fetch_package_log(pkg) package['installed_from_binary_cache'] = \ @@ -182,14 +184,15 @@ def wrapper(pkg, *args, **kwargs): return wrapper - spack.package.PackageBase.do_install = gather_info( - spack.package.PackageBase.do_install + spack.package.PackageInstaller._install_task = gather_info( + spack.package.PackageInstaller._install_task ) def __exit__(self, exc_type, exc_val, exc_tb): - # Restore the original method in PackageBase - spack.package.PackageBase.do_install = InfoCollector._backup_do_install + # Restore the original method in PackageInstaller + spack.package.PackageInstaller._install_task = \ + InfoCollector._backup__install_task for spec in self.specs: spec['npackages'] = len(spec['packages']) @@ -208,9 +211,9 @@ class collect_info(object): """Collects information to build a report while installing and dumps it on exit. - If the format name is not ``None``, this context manager - decorates PackageBase.do_install when entering the context - and unrolls the change when exiting. + If the format name is not ``None``, this context manager decorates + PackageInstaller._install_task when entering the context for a + PackageBase.do_install operation and unrolls the change when exiting. Within the context, only the specs that are passed to it on initialization will be recorded for the report. Data from @@ -255,14 +258,14 @@ def concretization_report(self, msg): def __enter__(self): if self.format_name: - # Start the collector and patch PackageBase.do_install + # Start the collector and patch PackageInstaller._install_task self.collector = InfoCollector(self.specs) self.collector.__enter__() def __exit__(self, exc_type, exc_val, exc_tb): if self.format_name: # Close the collector and restore the - # original PackageBase.do_install + # original PackageInstaller._install_task self.collector.__exit__(exc_type, exc_val, exc_tb) report_data = {'specs': self.collector.specs} diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 917d20aa048..b4456382280 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -307,8 +307,9 @@ def __init__( lock_id = prefix_bits(sha1, bit_length(sys.maxsize)) stage_lock_path = os.path.join(get_stage_root(), '.lock') + tty.debug("Creating stage lock {0}".format(self.name)) Stage.stage_locks[self.name] = spack.util.lock.Lock( - stage_lock_path, lock_id, 1) + stage_lock_path, lock_id, 1, desc=self.name) self._lock = Stage.stage_locks[self.name] diff --git a/lib/spack/spack/test/buildtask.py b/lib/spack/spack/test/buildtask.py new file mode 100644 index 00000000000..dcf3d29a6f8 --- /dev/null +++ b/lib/spack/spack/test/buildtask.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) + +import pytest + +import spack.installer as inst +import spack.repo +import spack.spec + + +def test_build_task_errors(install_mockery): + with pytest.raises(ValueError, match='must be a package'): + inst.BuildTask('abc', False, 0, 0, 0, []) + + pkg = spack.repo.get('trivial-install-test-package') + with pytest.raises(ValueError, match='must have a concrete spec'): + inst.BuildTask(pkg, False, 0, 0, 0, []) + + spec = spack.spec.Spec('trivial-install-test-package') + spec.concretize() + assert spec.concrete + with pytest.raises(inst.InstallError, match='Cannot create a build task'): + inst.BuildTask(spec.package, False, 0, 0, inst.STATUS_REMOVED, []) + + +def test_build_task_basics(install_mockery): + spec = spack.spec.Spec('dependent-install') + spec.concretize() + assert spec.concrete + + # Ensure key properties match expectations + task = inst.BuildTask(spec.package, False, 0, 0, inst.STATUS_ADDED, []) + assert task.priority == len(task.uninstalled_deps) + assert task.key == (task.priority, task.sequence) + + # Ensure flagging installed works as expected + assert len(task.uninstalled_deps) > 0 + assert task.dependencies == task.uninstalled_deps + task.flag_installed(task.dependencies) + assert len(task.uninstalled_deps) == 0 + assert task.priority == 0 + + +def test_build_task_strings(install_mockery): + """Tests of build_task repr and str for coverage purposes.""" + # Using a package with one dependency + spec = spack.spec.Spec('dependent-install') + spec.concretize() + assert spec.concrete + + # Ensure key properties match expectations + task = inst.BuildTask(spec.package, False, 0, 0, inst.STATUS_ADDED, []) + + # Cover __repr__ + irep = task.__repr__() + assert irep.startswith(task.__class__.__name__) + assert "status='queued'" in irep # == STATUS_ADDED + assert "sequence=" in irep + + # Cover __str__ + istr = str(task) + assert "status=queued" in istr # == STATUS_ADDED + assert "#dependencies=1" in istr + assert "priority=" in istr diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index 9e8c424ce06..841e6e20c8a 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -169,9 +169,11 @@ def test_env_install_same_spec_twice(install_mockery, mock_fetch, capfd): e = ev.read('test') with capfd.disabled(): with e: + # The first installation outputs the package prefix install('cmake-client') + # The second installation attempt will also update the view out = install('cmake-client') - assert 'is already installed in' in out + assert 'Updating view at' in out def test_remove_after_concretize(): diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 4c6c0860aa9..2697a539bf6 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -139,8 +139,7 @@ def test_install_output_on_build_error(mock_packages, mock_archive, mock_fetch, # capfd interferes with Spack's capturing with capfd.disabled(): out = install('build-error', fail_on_error=False) - assert isinstance(install.error, spack.build_environment.ChildError) - assert install.error.name == 'ProcessError' + assert 'ProcessError' in out assert 'configure: error: in /path/to/some/file:' in out assert 'configure: error: cannot run C compiled programs.' in out @@ -177,9 +176,10 @@ def test_show_log_on_error(mock_packages, mock_archive, mock_fetch, assert install.error.pkg.name == 'build-error' assert 'Full build log:' in out + # Message shows up for ProcessError (1), ChildError (1), and output (1) errors = [line for line in out.split('\n') if 'configure: error: cannot run C compiled programs' in line] - assert len(errors) == 2 + assert len(errors) == 3 def test_install_overwrite( @@ -373,8 +373,12 @@ def just_throw(*args, **kwargs): exc_type = getattr(builtins, exc_typename) raise exc_type(msg) - monkeypatch.setattr(spack.package.PackageBase, 'do_install', just_throw) + monkeypatch.setattr(spack.installer.PackageInstaller, '_install_task', + just_throw) + # TODO: Why does junit output capture appear to swallow the exception + # TODO: as evidenced by the two failing packages getting tagged as + # TODO: installed? with tmpdir.as_cwd(): install('--log-format=junit', '--log-file=test.xml', 'libdwarf') @@ -384,14 +388,14 @@ def just_throw(*args, **kwargs): content = filename.open().read() - # Count failures and errors correctly - assert 'tests="1"' in content + # Count failures and errors correctly: libdwarf _and_ libelf + assert 'tests="2"' in content assert 'failures="0"' in content - assert 'errors="1"' in content + assert 'errors="2"' in content # We want to have both stdout and stderr assert '' in content - assert msg in content + assert 'error message="{0}"'.format(msg) in content @pytest.mark.usefixtures('noop_install', 'config') @@ -478,9 +482,8 @@ def test_cdash_upload_build_error(tmpdir, mock_fetch, install_mockery, @pytest.mark.disable_clean_stage_check -def test_cdash_upload_clean_build(tmpdir, mock_fetch, install_mockery, - capfd): - # capfd interferes with Spack's capturing +def test_cdash_upload_clean_build(tmpdir, mock_fetch, install_mockery, capfd): + # capfd interferes with Spack's capturing of e.g., Build.xml output with capfd.disabled(): with tmpdir.as_cwd(): install( @@ -498,7 +501,7 @@ def test_cdash_upload_clean_build(tmpdir, mock_fetch, install_mockery, @pytest.mark.disable_clean_stage_check def test_cdash_upload_extra_params(tmpdir, mock_fetch, install_mockery, capfd): - # capfd interferes with Spack's capturing + # capfd interferes with Spack's capture of e.g., Build.xml output with capfd.disabled(): with tmpdir.as_cwd(): install( @@ -520,7 +523,7 @@ def test_cdash_upload_extra_params(tmpdir, mock_fetch, install_mockery, capfd): @pytest.mark.disable_clean_stage_check def test_cdash_buildstamp_param(tmpdir, mock_fetch, install_mockery, capfd): - # capfd interferes with Spack's capturing + # capfd interferes with Spack's capture of e.g., Build.xml output with capfd.disabled(): with tmpdir.as_cwd(): cdash_track = 'some_mocked_track' @@ -569,7 +572,6 @@ def test_cdash_install_from_spec_yaml(tmpdir, mock_fetch, install_mockery, report_file = report_dir.join('a_Configure.xml') assert report_file in report_dir.listdir() content = report_file.open().read() - import re install_command_regex = re.compile( r'(.+)', re.MULTILINE | re.DOTALL) @@ -599,6 +601,7 @@ def test_build_warning_output(tmpdir, mock_fetch, install_mockery, capfd): msg = '' try: install('build-warnings') + assert False, "no exception was raised!" except spack.build_environment.ChildError as e: msg = e.long_message @@ -607,12 +610,16 @@ def test_build_warning_output(tmpdir, mock_fetch, install_mockery, capfd): def test_cache_only_fails(tmpdir, mock_fetch, install_mockery, capfd): + msg = '' with capfd.disabled(): try: install('--cache-only', 'libdwarf') - assert False - except spack.main.SpackCommandError: - pass + except spack.installer.InstallError as e: + msg = str(e) + + # libelf from cache failed to install, which automatically removed the + # the libdwarf build task and flagged the package as failed to install. + assert 'Installation of libdwarf failed' in msg def test_install_only_dependencies(tmpdir, mock_fetch, install_mockery): diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index 97bbb69b528..04e870d336a 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -28,6 +28,7 @@ import spack.database import spack.directory_layout import spack.environment as ev +import spack.package import spack.package_prefs import spack.paths import spack.platforms.test @@ -38,7 +39,6 @@ from spack.util.pattern import Bunch from spack.dependency import Dependency -from spack.package import PackageBase from spack.fetch_strategy import FetchStrategyComposite, URLFetchStrategy from spack.fetch_strategy import FetchError from spack.spec import Spec @@ -329,8 +329,18 @@ def mock_repo_path(): yield spack.repo.RepoPath(spack.paths.mock_packages_path) +@pytest.fixture +def mock_pkg_install(monkeypatch): + def _pkg_install_fn(pkg, spec, prefix): + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + + monkeypatch.setattr(spack.package.PackageBase, 'install', _pkg_install_fn, + raising=False) + + @pytest.fixture(scope='function') -def mock_packages(mock_repo_path): +def mock_packages(mock_repo_path, mock_pkg_install): """Use the 'builtin.mock' repository instead of 'builtin'""" with use_repo(mock_repo_path): yield mock_repo_path @@ -599,10 +609,10 @@ def mock_fetch(mock_archive): def fake_fn(self): return fetcher - orig_fn = PackageBase.fetcher - PackageBase.fetcher = fake_fn + orig_fn = spack.package.PackageBase.fetcher + spack.package.PackageBase.fetcher = fake_fn yield - PackageBase.fetcher = orig_fn + spack.package.PackageBase.fetcher = orig_fn class MockLayout(object): diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index 1af125a7233..8f0f4dff6ab 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -14,6 +14,7 @@ import pytest import json +import llnl.util.lock as lk from llnl.util.tty.colify import colify import spack.repo @@ -749,3 +750,118 @@ def test_query_spec_with_non_conditional_virtual_dependency(database): # dependency that are not conditional on variants results = spack.store.db.query_local('mpileaks ^mpich') assert len(results) == 1 + + +def test_failed_spec_path_error(database): + """Ensure spec not concrete check is covered.""" + s = spack.spec.Spec('a') + with pytest.raises(ValueError, matches='Concrete spec required'): + spack.store.db._failed_spec_path(s) + + +@pytest.mark.db +def test_clear_failure_keep(mutable_database, monkeypatch, capfd): + """Add test coverage for clear_failure operation when to be retained.""" + def _is(db, spec): + return True + + # Pretend the spec has been failure locked + monkeypatch.setattr(spack.database.Database, 'prefix_failure_locked', _is) + + s = spack.spec.Spec('a') + spack.store.db.clear_failure(s) + out = capfd.readouterr()[0] + assert 'Retaining failure marking' in out + + +@pytest.mark.db +def test_clear_failure_forced(mutable_database, monkeypatch, capfd): + """Add test coverage for clear_failure operation when force.""" + def _is(db, spec): + return True + + # Pretend the spec has been failure locked + monkeypatch.setattr(spack.database.Database, 'prefix_failure_locked', _is) + # Ensure raise OSError when try to remove the non-existent marking + monkeypatch.setattr(spack.database.Database, 'prefix_failure_marked', _is) + + s = spack.spec.Spec('a').concretized() + spack.store.db.clear_failure(s, force=True) + out = capfd.readouterr()[1] + assert 'Removing failure marking despite lock' in out + assert 'Unable to remove failure marking' in out + + +@pytest.mark.db +def test_mark_failed(mutable_database, monkeypatch, tmpdir, capsys): + """Add coverage to mark_failed.""" + def _raise_exc(lock): + raise lk.LockTimeoutError('Mock acquire_write failure') + + # Ensure attempt to acquire write lock on the mark raises the exception + monkeypatch.setattr(lk.Lock, 'acquire_write', _raise_exc) + + with tmpdir.as_cwd(): + s = spack.spec.Spec('a').concretized() + spack.store.db.mark_failed(s) + + out = str(capsys.readouterr()[1]) + assert 'Unable to mark a as failed' in out + + # Clean up the failure mark to ensure it does not interfere with other + # tests using the same spec. + del spack.store.db._prefix_failures[s.prefix] + + +@pytest.mark.db +def test_prefix_failed(mutable_database, monkeypatch): + """Add coverage to prefix_failed operation.""" + def _is(db, spec): + return True + + s = spack.spec.Spec('a').concretized() + + # Confirm the spec is not already marked as failed + assert not spack.store.db.prefix_failed(s) + + # Check that a failure entry is sufficient + spack.store.db._prefix_failures[s.prefix] = None + assert spack.store.db.prefix_failed(s) + + # Remove the entry and check again + del spack.store.db._prefix_failures[s.prefix] + assert not spack.store.db.prefix_failed(s) + + # Now pretend that the prefix failure is locked + monkeypatch.setattr(spack.database.Database, 'prefix_failure_locked', _is) + assert spack.store.db.prefix_failed(s) + + +def test_prefix_read_lock_error(mutable_database, monkeypatch): + """Cover the prefix read lock exception.""" + def _raise(db, spec): + raise lk.LockError('Mock lock error') + + s = spack.spec.Spec('a').concretized() + + # Ensure subsequent lock operations fail + monkeypatch.setattr(lk.Lock, 'acquire_read', _raise) + + with pytest.raises(Exception): + with spack.store.db.prefix_read_lock(s): + assert False + + +def test_prefix_write_lock_error(mutable_database, monkeypatch): + """Cover the prefix write lock exception.""" + def _raise(db, spec): + raise lk.LockError('Mock lock error') + + s = spack.spec.Spec('a').concretized() + + # Ensure subsequent lock operations fail + monkeypatch.setattr(lk.Lock, 'acquire_write', _raise) + + with pytest.raises(Exception): + with spack.store.db.prefix_write_lock(s): + assert False diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py index 914ae527a07..f53a760f702 100644 --- a/lib/spack/spack/test/install.py +++ b/lib/spack/spack/test/install.py @@ -100,6 +100,9 @@ def test_partial_install_delete_prefix_and_stage(install_mockery, mock_fetch): rm_prefix_checker = RemovePrefixChecker(instance_rm_prefix) spack.package.Package.remove_prefix = rm_prefix_checker.remove_prefix + # must clear failure markings for the package before re-installing it + spack.store.db.clear_failure(spec, True) + pkg.succeed = True pkg.stage = MockStage(pkg.stage) @@ -264,6 +267,9 @@ def test_partial_install_keep_prefix(install_mockery, mock_fetch): pkg.do_install(keep_prefix=True) assert os.path.exists(pkg.prefix) + # must clear failure markings for the package before re-installing it + spack.store.db.clear_failure(spec, True) + pkg.succeed = True # make the build succeed pkg.stage = MockStage(pkg.stage) pkg.do_install(keep_prefix=True) @@ -300,12 +306,13 @@ def test_store(install_mockery, mock_fetch): @pytest.mark.disable_clean_stage_check -def test_failing_build(install_mockery, mock_fetch): +def test_failing_build(install_mockery, mock_fetch, capfd): spec = Spec('failing-build').concretized() pkg = spec.package with pytest.raises(spack.build_environment.ChildError): pkg.do_install() + assert 'InstallError: Expected Failure' in capfd.readouterr()[0] class MockInstallError(spack.error.SpackError): @@ -432,7 +439,7 @@ def test_pkg_install_log(install_mockery): # Attempt installing log without the build log file with pytest.raises(IOError, match="No such file or directory"): - spec.package.log() + spack.installer.log(spec.package) # Set up mock build files and try again log_path = spec.package.log_path @@ -445,7 +452,7 @@ def test_pkg_install_log(install_mockery): install_path = os.path.dirname(spec.package.install_log_path) mkdirp(install_path) - spec.package.log() + spack.installer.log(spec.package) assert os.path.exists(spec.package.install_log_path) assert os.path.exists(spec.package.install_env_path) @@ -469,3 +476,14 @@ def test_unconcretized_install(install_mockery, mock_fetch, mock_packages): with pytest.raises(ValueError, match="only patch concrete packages"): spec.package.do_patch() + + +def test_install_error(): + try: + msg = 'test install error' + long_msg = 'this is the long version of test install error' + raise InstallError(msg, long_msg=long_msg) + except Exception as exc: + assert exc.__class__.__name__ == 'InstallError' + assert exc.message == msg + assert exc.long_message == long_msg diff --git a/lib/spack/spack/test/installer.py b/lib/spack/spack/test/installer.py new file mode 100644 index 00000000000..02d10fce41e --- /dev/null +++ b/lib/spack/spack/test/installer.py @@ -0,0 +1,579 @@ +# Copyright 2013-2020 Lawrence Livermore 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 +import pytest + +import llnl.util.tty as tty + +import spack.binary_distribution +import spack.compilers +import spack.directory_layout as dl +import spack.installer as inst +import spack.util.lock as lk +import spack.repo +import spack.spec + + +def _noop(*args, **kwargs): + """Generic monkeypatch no-op routine.""" + pass + + +def _none(*args, **kwargs): + """Generic monkeypatch function that always returns None.""" + return None + + +def _true(*args, **kwargs): + """Generic monkeypatch function that always returns True.""" + return True + + +def create_build_task(pkg): + """ + Create a built task for the given (concretized) package + + Args: + pkg (PackageBase): concretized package associated with the task + + Return: + (BuildTask) A basic package build task + """ + return inst.BuildTask(pkg, False, 0, 0, inst.STATUS_ADDED, []) + + +def create_installer(spec_name): + """ + Create an installer for the named spec + + Args: + spec_name (str): Name of the explicit install spec + + Return: + spec (Spec): concretized spec + installer (PackageInstaller): the associated package installer + """ + spec = spack.spec.Spec(spec_name) + spec.concretize() + assert spec.concrete + return spec, inst.PackageInstaller(spec.package) + + +@pytest.mark.parametrize('sec,result', [ + (86400, "24h"), + (3600, "1h"), + (60, "1m"), + (1.802, "1.80s"), + (3723.456, "1h 2m 3.46s")]) +def test_hms(sec, result): + assert inst._hms(sec) == result + + +def test_install_msg(): + name = 'some-package' + pid = 123456 + expected = "{0}: Installing {1}".format(pid, name) + assert inst.install_msg(name, pid) == expected + + +def test_install_from_cache_errors(install_mockery, capsys): + """Test to ensure cover _install_from_cache errors.""" + spec = spack.spec.Spec('trivial-install-test-package') + spec.concretize() + assert spec.concrete + + # Check with cache-only + with pytest.raises(SystemExit): + inst._install_from_cache(spec.package, True, True) + + captured = str(capsys.readouterr()) + assert 'No binary' in captured + assert 'found when cache-only specified' in captured + assert not spec.package.installed_from_binary_cache + + # Check when don't expect to install only from binary cache + assert not inst._install_from_cache(spec.package, False, True) + assert not spec.package.installed_from_binary_cache + + +def test_install_from_cache_ok(install_mockery, monkeypatch): + """Test to ensure cover _install_from_cache to the return.""" + spec = spack.spec.Spec('trivial-install-test-package') + spec.concretize() + monkeypatch.setattr(inst, '_try_install_from_binary_cache', _true) + monkeypatch.setattr(spack.hooks, 'post_install', _noop) + + assert inst._install_from_cache(spec.package, True, True) + + +def test_process_external_package_module(install_mockery, monkeypatch, capfd): + """Test to simply cover the external module message path.""" + spec = spack.spec.Spec('trivial-install-test-package') + spec.concretize() + assert spec.concrete + + # Ensure take the external module path WITHOUT any changes to the database + monkeypatch.setattr(spack.database.Database, 'get_record', _none) + + spec.external_path = '/actual/external/path/not/checked' + spec.external_module = '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 'is actually installed in {0}'.format(spec.external_path) in out + + +def test_process_binary_cache_tarball_none(install_mockery, monkeypatch, + capfd): + """Tests to cover _process_binary_cache_tarball when no tarball.""" + monkeypatch.setattr(spack.binary_distribution, 'download_tarball', _none) + + pkg = spack.repo.get('trivial-install-test-package') + assert not inst._process_binary_cache_tarball(pkg, None, False) + + assert 'exists in binary cache but' in capfd.readouterr()[0] + + +def test_process_binary_cache_tarball_tar(install_mockery, monkeypatch, capfd): + """Tests to cover _process_binary_cache_tarball with a tar file.""" + def _spec(spec): + return spec + + # Skip binary distribution functionality since assume tested elsewhere + monkeypatch.setattr(spack.binary_distribution, 'download_tarball', _spec) + monkeypatch.setattr(spack.binary_distribution, 'extract_tarball', _noop) + + # Skip database updates + monkeypatch.setattr(spack.database.Database, 'add', _noop) + + spec = spack.spec.Spec('a').concretized() + assert inst._process_binary_cache_tarball(spec.package, spec, False) + + assert 'Installing a from binary cache' in capfd.readouterr()[0] + + +def test_installer_init_errors(install_mockery): + """Test to ensure cover installer constructor errors.""" + with pytest.raises(ValueError, match='must be a package'): + inst.PackageInstaller('abc') + + pkg = spack.repo.get('trivial-install-test-package') + with pytest.raises(ValueError, match='Can only install concrete'): + inst.PackageInstaller(pkg) + + +def test_installer_strings(install_mockery): + """Tests of installer repr and str for coverage purposes.""" + spec, installer = create_installer('trivial-install-test-package') + + # Cover __repr__ + irep = installer.__repr__() + assert irep.startswith(installer.__class__.__name__) + assert "installed=" in irep + assert "failed=" in irep + + # Cover __str__ + istr = str(installer) + assert "#tasks=0" in istr + assert "installed (0)" in istr + assert "failed (0)" in istr + + +def test_installer_last_phase_error(install_mockery, capsys): + """Test to cover last phase error.""" + spec = spack.spec.Spec('trivial-install-test-package') + spec.concretize() + assert spec.concrete + with pytest.raises(SystemExit): + installer = inst.PackageInstaller(spec.package) + installer.install(stop_at='badphase') + + captured = capsys.readouterr() + assert 'is not an allowed phase' in str(captured) + + +def test_installer_ensure_ready_errors(install_mockery): + """Test to cover _ensure_ready errors.""" + spec, installer = create_installer('trivial-install-test-package') + + fmt = r'cannot be installed locally.*{0}' + # Force an external package error + path, module = spec.external_path, spec.external_module + spec.external_path = '/actual/external/path/not/checked' + spec.external_module = '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.package._installed_upstream = True + msg = fmt.format('is upstream') + with pytest.raises(inst.UpstreamPackageError, match=msg): + installer._ensure_install_ready(spec.package) + + # Force an install lock error, which should occur naturally since + # we are calling an internal method prior to any lock-related setup + spec.package._installed_upstream = False + assert len(installer.locks) == 0 + with pytest.raises(inst.InstallLockError, match=fmt.format('not locked')): + installer._ensure_install_ready(spec.package) + + +def test_ensure_locked_have(install_mockery, tmpdir): + """Test to cover _ensure_locked when already have lock.""" + spec, installer = create_installer('trivial-install-test-package') + + with tmpdir.as_cwd(): + lock = lk.Lock('./test', default_timeout=1e-9, desc='test') + lock_type = 'read' + tpl = (lock_type, lock) + installer.locks[installer.pkg_id] = tpl + assert installer._ensure_locked(lock_type, spec.package) == tpl + + +def test_package_id(install_mockery): + """Test to cover package_id functionality.""" + pkg = spack.repo.get('trivial-install-test-package') + with pytest.raises(ValueError, matches='spec is not concretized'): + inst.package_id(pkg) + + spec = spack.spec.Spec('trivial-install-test-package') + spec.concretize() + assert spec.concrete + pkg = spec.package + assert pkg.name in inst.package_id(pkg) + + +def test_fake_install(install_mockery): + """Test to cover fake install basics.""" + spec = spack.spec.Spec('trivial-install-test-package') + spec.concretize() + assert spec.concrete + pkg = spec.package + inst._do_fake_install(pkg) + assert os.path.isdir(pkg.prefix.lib) + + +def test_packages_needed_to_bootstrap_compiler(install_mockery, monkeypatch): + """Test to cover most of _packages_needed_to_boostrap_compiler.""" + # TODO: More work is needed to go beyond the dependency check + def _no_compilers(pkg, arch_spec): + return [] + + # Test path where no compiler packages returned + spec = spack.spec.Spec('trivial-install-test-package') + spec.concretize() + assert spec.concrete + packages = inst._packages_needed_to_bootstrap_compiler(spec.package) + assert not packages + + # Test up to the dependency check + monkeypatch.setattr(spack.compilers, 'compilers_for_spec', _no_compilers) + with pytest.raises(spack.repo.UnknownPackageError, matches='not found'): + inst._packages_needed_to_bootstrap_compiler(spec.package) + + +def test_dump_packages_deps(install_mockery, tmpdir): + """Test to add coverage to dump_packages.""" + spec = spack.spec.Spec('simple-inheritance').concretized() + with tmpdir.as_cwd(): + inst.dump_packages(spec, '.') + + +def test_add_bootstrap_compilers(install_mockery, monkeypatch): + """Test to cover _add_bootstrap_compilers.""" + def _pkgs(pkg): + spec = spack.spec.Spec('mpi').concretized() + return [(spec.package, True)] + + spec, installer = create_installer('trivial-install-test-package') + + monkeypatch.setattr(inst, '_packages_needed_to_bootstrap_compiler', _pkgs) + installer._add_bootstrap_compilers(spec.package) + + ids = list(installer.build_tasks) + assert len(ids) == 1 + task = installer.build_tasks[ids[0]] + assert task.compiler + + +def test_prepare_for_install_on_installed(install_mockery, monkeypatch): + """Test of _prepare_for_install's early return for installed task path.""" + spec, installer = create_installer('dependent-install') + task = create_build_task(spec.package) + installer.installed.add(task.pkg_id) + + monkeypatch.setattr(inst.PackageInstaller, '_ensure_install_ready', _noop) + installer._prepare_for_install(task, True, True, False) + + +def test_installer_init_queue(install_mockery): + """Test of installer queue functions.""" + with spack.config.override('config:install_missing_compilers', True): + spec, installer = create_installer('dependent-install') + installer._init_queue(True, True) + + ids = list(installer.build_tasks) + assert len(ids) == 2 + assert 'dependency-install' in ids + assert 'dependent-install' in ids + + +def test_install_task_use_cache(install_mockery, monkeypatch): + """Test _install_task to cover use_cache path.""" + spec, installer = create_installer('trivial-install-test-package') + task = create_build_task(spec.package) + + monkeypatch.setattr(inst, '_install_from_cache', _true) + installer._install_task(task) + assert spec.package.name in installer.installed + + +def test_release_lock_write_n_exception(install_mockery, tmpdir, capsys): + """Test _release_lock for supposed write lock with exception.""" + spec, installer = create_installer('trivial-install-test-package') + + pkg_id = 'test' + with tmpdir.as_cwd(): + lock = lk.Lock('./test', default_timeout=1e-9, desc='test') + installer.locks[pkg_id] = ('write', lock) + assert lock._writes == 0 + + installer._release_lock(pkg_id) + out = str(capsys.readouterr()[1]) + msg = 'exception when releasing write lock for {0}'.format(pkg_id) + assert msg in out + + +def test_requeue_task(install_mockery, capfd): + """Test to ensure cover _requeue_task.""" + spec, installer = create_installer('a') + task = create_build_task(spec.package) + + installer._requeue_task(task) + + ids = list(installer.build_tasks) + assert len(ids) == 1 + qtask = installer.build_tasks[ids[0]] + assert qtask.status == inst.STATUS_INSTALLING + + out = capfd.readouterr()[0] + assert 'Installing a in progress by another process' in out + + +def test_cleanup_all_tasks(install_mockery, monkeypatch): + """Test to ensure cover _cleanup_all_tasks.""" + def _mktask(pkg): + return create_build_task(pkg) + + def _rmtask(installer, pkg_id): + raise RuntimeError('Raise an exception to test except path') + + spec, installer = create_installer('a') + + # Cover task removal happy path + installer.build_tasks['a'] = _mktask(spec.package) + installer._cleanup_all_tasks() + assert len(installer.build_tasks) == 0 + + # Cover task removal exception path + installer.build_tasks['a'] = _mktask(spec.package) + monkeypatch.setattr(inst.PackageInstaller, '_remove_task', _rmtask) + installer._cleanup_all_tasks() + assert len(installer.build_tasks) == 1 + + +def test_cleanup_failed(install_mockery, tmpdir, monkeypatch, capsys): + """Test to increase coverage of _cleanup_failed.""" + msg = 'Fake release_write exception' + + def _raise_except(lock): + raise RuntimeError(msg) + + spec, installer = create_installer('trivial-install-test-package') + + monkeypatch.setattr(lk.Lock, 'release_write', _raise_except) + pkg_id = 'test' + with tmpdir.as_cwd(): + lock = lk.Lock('./test', default_timeout=1e-9, desc='test') + installer.failed[pkg_id] = lock + + installer._cleanup_failed(pkg_id) + out = str(capsys.readouterr()[1]) + assert 'exception when removing failure mark' in out + assert msg in out + + +def test_update_failed_no_mark(install_mockery): + """Test of _update_failed sans mark and dependent build tasks.""" + spec, installer = create_installer('dependent-install') + task = create_build_task(spec.package) + + installer._update_failed(task) + assert installer.failed['dependent-install'] is None + + +def test_install_uninstalled_deps(install_mockery, monkeypatch, capsys): + """Test install with uninstalled dependencies.""" + spec, installer = create_installer('dependent-install') + + # Skip the actual installation and any status updates + monkeypatch.setattr(inst.PackageInstaller, '_install_task', _noop) + monkeypatch.setattr(inst.PackageInstaller, '_update_installed', _noop) + monkeypatch.setattr(inst.PackageInstaller, '_update_failed', _noop) + + msg = 'Cannot proceed with dependent-install' + with pytest.raises(spack.installer.InstallError, matches=msg): + installer.install() + + out = str(capsys.readouterr()) + assert 'Detected uninstalled dependencies for' in out + + +def test_install_failed(install_mockery, monkeypatch, capsys): + """Test install with failed install.""" + spec, installer = create_installer('b') + + # Make sure the package is identified as failed + monkeypatch.setattr(spack.database.Database, 'prefix_failed', _true) + + # Skip the actual installation though it should never get there + monkeypatch.setattr(inst.PackageInstaller, '_install_task', _noop) + + msg = 'Installation of b failed' + with pytest.raises(spack.installer.InstallError, matches=msg): + installer.install() + + out = str(capsys.readouterr()) + assert 'Warning: b failed to install' in out + + +def test_install_lock_failures(install_mockery, monkeypatch, capfd): + """Cover basic install lock failure handling in a single pass.""" + def _requeued(installer, task): + tty.msg('requeued {0}' .format(task.pkg.spec.name)) + + def _not_locked(installer, lock_type, pkg): + tty.msg('{0} locked {1}' .format(lock_type, pkg.spec.name)) + return lock_type, None + + spec, installer = create_installer('b') + + # Ensure never acquire a lock + monkeypatch.setattr(inst.PackageInstaller, '_ensure_locked', _not_locked) + + # Ensure don't continually requeue the task + monkeypatch.setattr(inst.PackageInstaller, '_requeue_task', _requeued) + + # Skip the actual installation though should never reach it + monkeypatch.setattr(inst.PackageInstaller, '_install_task', _noop) + + installer.install() + out = capfd.readouterr()[0] + expected = ['write locked', 'read locked', 'requeued'] + for exp, ln in zip(expected, out.split('\n')): + assert exp in ln + + +def test_install_lock_installed_requeue(install_mockery, monkeypatch, capfd): + """Cover basic install handling for installed package.""" + def _install(installer, task, **kwargs): + tty.msg('{0} installing'.format(task.pkg.spec.name)) + + def _not_locked(installer, lock_type, pkg): + tty.msg('{0} locked {1}' .format(lock_type, pkg.spec.name)) + return lock_type, None + + def _prep(installer, task, keep_prefix, keep_stage, restage): + installer.installed.add('b') + tty.msg('{0} is installed' .format(task.pkg.spec.name)) + + # also do not allow the package to be locked again + monkeypatch.setattr(inst.PackageInstaller, '_ensure_locked', + _not_locked) + + def _requeued(installer, task): + tty.msg('requeued {0}' .format(task.pkg.spec.name)) + + # Skip the actual installation though should never reach it + monkeypatch.setattr(inst.PackageInstaller, '_install_task', _install) + + # Flag the package as installed + monkeypatch.setattr(inst.PackageInstaller, '_prepare_for_install', _prep) + + # Ensure don't continually requeue the task + monkeypatch.setattr(inst.PackageInstaller, '_requeue_task', _requeued) + + spec, installer = create_installer('b') + + installer.install() + assert 'b' not in installer.installed + + out = capfd.readouterr()[0] + expected = ['is installed', 'read locked', 'requeued'] + for exp, ln in zip(expected, out.split('\n')): + assert exp in ln + + +def test_install_read_locked_requeue(install_mockery, monkeypatch, capfd): + """Cover basic read lock handling for uninstalled package with requeue.""" + orig_fn = inst.PackageInstaller._ensure_locked + + def _install(installer, task, **kwargs): + tty.msg('{0} installing'.format(task.pkg.spec.name)) + + def _read(installer, lock_type, pkg): + tty.msg('{0}->read locked {1}' .format(lock_type, pkg.spec.name)) + return orig_fn(installer, 'read', pkg) + + def _prep(installer, task, keep_prefix, keep_stage, restage): + tty.msg('preparing {0}' .format(task.pkg.spec.name)) + assert task.pkg.spec.name not in installer.installed + + def _requeued(installer, task): + tty.msg('requeued {0}' .format(task.pkg.spec.name)) + + # Force a read lock + monkeypatch.setattr(inst.PackageInstaller, '_ensure_locked', _read) + + # Skip the actual installation though should never reach it + monkeypatch.setattr(inst.PackageInstaller, '_install_task', _install) + + # Flag the package as installed + monkeypatch.setattr(inst.PackageInstaller, '_prepare_for_install', _prep) + + # Ensure don't continually requeue the task + monkeypatch.setattr(inst.PackageInstaller, '_requeue_task', _requeued) + + spec, installer = create_installer('b') + + installer.install() + assert 'b' not in installer.installed + + out = capfd.readouterr()[0] + expected = ['write->read locked', 'preparing', 'requeued'] + for exp, ln in zip(expected, out.split('\n')): + assert exp in ln + + +def test_install_dir_exists(install_mockery, monkeypatch, capfd): + """Cover capture of install directory exists error.""" + err = 'Mock directory exists error' + + def _install(installer, task, **kwargs): + raise dl.InstallDirectoryAlreadyExistsError(err) + + # Skip the actual installation though should never reach it + monkeypatch.setattr(inst.PackageInstaller, '_install_task', _install) + + spec, installer = create_installer('b') + + with pytest.raises(dl.InstallDirectoryAlreadyExistsError, matches=err): + installer.install() + + assert 'b' in installer.installed diff --git a/lib/spack/spack/test/llnl/util/lock.py b/lib/spack/spack/test/llnl/util/lock.py index 63f2b917822..7236e1dbf9b 100644 --- a/lib/spack/spack/test/llnl/util/lock.py +++ b/lib/spack/spack/test/llnl/util/lock.py @@ -1240,3 +1240,57 @@ def test_lock_in_current_directory(tmpdir): pass with lk.WriteTransaction(lock): pass + + +def test_attempts_str(): + assert lk._attempts_str(0, 0) == '' + assert lk._attempts_str(0.12, 1) == '' + assert lk._attempts_str(12.345, 2) == ' after 12.35s and 2 attempts' + + +def test_lock_str(): + lock = lk.Lock('lockfile') + lockstr = str(lock) + assert 'lockfile[0:0]' in lockstr + assert 'timeout=None' in lockstr + assert '#reads=0, #writes=0' in lockstr + + +def test_downgrade_write_okay(tmpdir): + """Test the lock write-to-read downgrade operation.""" + with tmpdir.as_cwd(): + lock = lk.Lock('lockfile') + lock.acquire_write() + lock.downgrade_write_to_read() + assert lock._reads == 1 + assert lock._writes == 0 + + +def test_downgrade_write_fails(tmpdir): + """Test failing the lock write-to-read downgrade operation.""" + with tmpdir.as_cwd(): + lock = lk.Lock('lockfile') + lock.acquire_read() + msg = 'Cannot downgrade lock from write to read on file: lockfile' + with pytest.raises(lk.LockDowngradeError, matches=msg): + lock.downgrade_write_to_read() + + +def test_upgrade_read_okay(tmpdir): + """Test the lock read-to-write upgrade operation.""" + with tmpdir.as_cwd(): + lock = lk.Lock('lockfile') + lock.acquire_read() + lock.upgrade_read_to_write() + assert lock._reads == 0 + assert lock._writes == 1 + + +def test_upgrade_read_fails(tmpdir): + """Test failing the lock read-to-write upgrade operation.""" + with tmpdir.as_cwd(): + lock = lk.Lock('lockfile') + lock.acquire_write() + msg = 'Cannot upgrade lock from read to write on file: lockfile' + with pytest.raises(lk.LockUpgradeError, matches=msg): + lock.upgrade_read_to_write() diff --git a/var/spack/repos/builtin.mock/packages/a/package.py b/var/spack/repos/builtin.mock/packages/a/package.py index 3eae25366a4..04e69dcd91d 100644 --- a/var/spack/repos/builtin.mock/packages/a/package.py +++ b/var/spack/repos/builtin.mock/packages/a/package.py @@ -49,4 +49,6 @@ def build(self, spec, prefix): pass def install(self, spec, prefix): - pass + # sanity_check_prefix requires something in the install directory + # Test requires overriding the one provided by `AutotoolsPackage` + mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin.mock/packages/b/package.py b/var/spack/repos/builtin.mock/packages/b/package.py index 5fabc274d23..0dd6556e824 100644 --- a/var/spack/repos/builtin.mock/packages/b/package.py +++ b/var/spack/repos/builtin.mock/packages/b/package.py @@ -13,6 +13,3 @@ class B(Package): url = "http://www.example.com/b-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/boost/package.py b/var/spack/repos/builtin.mock/packages/boost/package.py index f946191f475..6d2cea3da9c 100644 --- a/var/spack/repos/builtin.mock/packages/boost/package.py +++ b/var/spack/repos/builtin.mock/packages/boost/package.py @@ -59,6 +59,3 @@ class Boost(Package): description="Build the Boost Graph library") variant('taggedlayout', default=False, description="Augment library names with build options") - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/c/package.py b/var/spack/repos/builtin.mock/packages/c/package.py index 9942a297eb4..835f9d408ef 100644 --- a/var/spack/repos/builtin.mock/packages/c/package.py +++ b/var/spack/repos/builtin.mock/packages/c/package.py @@ -13,6 +13,3 @@ class C(Package): url = "http://www.example.com/c-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/conflicting-dependent/package.py b/var/spack/repos/builtin.mock/packages/conflicting-dependent/package.py index 8fa6c67d6e2..3c0f120085c 100644 --- a/var/spack/repos/builtin.mock/packages/conflicting-dependent/package.py +++ b/var/spack/repos/builtin.mock/packages/conflicting-dependent/package.py @@ -17,6 +17,3 @@ class ConflictingDependent(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dependency-install@:1.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py index 291fd887a67..2246bf0fce5 100644 --- a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py @@ -25,6 +25,3 @@ class DepDiamondPatchMid1(Package): # single patch file in repo depends_on('patch', patches='mid1.patch') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py index fa534664405..9638872a111 100644 --- a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py @@ -28,6 +28,3 @@ class DepDiamondPatchMid2(Package): patch('http://example.com/urlpatch.patch', sha256='mid21234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234'), # noqa: E501 ]) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py index c9660459528..fb86fa3ad32 100644 --- a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py @@ -27,6 +27,3 @@ class DepDiamondPatchTop(Package): depends_on('patch', patches='top.patch') depends_on('dep-diamond-patch-mid1') depends_on('dep-diamond-patch-mid2') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/develop-test/package.py b/var/spack/repos/builtin.mock/packages/develop-test/package.py index 4a2fde701e4..5c8820756d4 100644 --- a/var/spack/repos/builtin.mock/packages/develop-test/package.py +++ b/var/spack/repos/builtin.mock/packages/develop-test/package.py @@ -13,6 +13,3 @@ class DevelopTest(Package): version('develop', git='https://github.com/dummy/repo.git') version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/develop-test2/package.py b/var/spack/repos/builtin.mock/packages/develop-test2/package.py index 464219f6033..b3a808206dd 100644 --- a/var/spack/repos/builtin.mock/packages/develop-test2/package.py +++ b/var/spack/repos/builtin.mock/packages/develop-test2/package.py @@ -13,6 +13,3 @@ class DevelopTest2(Package): version('0.2.15.develop', git='https://github.com/dummy/repo.git') version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/direct-mpich/package.py b/var/spack/repos/builtin.mock/packages/direct-mpich/package.py index 4db94c66c23..940ecde2247 100644 --- a/var/spack/repos/builtin.mock/packages/direct-mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/direct-mpich/package.py @@ -13,6 +13,3 @@ class DirectMpich(Package): version('1.0', 'foobarbaz') depends_on('mpich') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py index 85f661a4852..4ad109a272d 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py @@ -12,6 +12,3 @@ class DtDiamondBottom(Package): url = "http://www.example.com/dt-diamond-bottom-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py index d0ed4efaeb2..9e3710c2101 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py @@ -14,6 +14,3 @@ class DtDiamondLeft(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dt-diamond-bottom', type='build') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py index c7842ead477..4fd5fa733cf 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py @@ -14,6 +14,3 @@ class DtDiamondRight(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dt-diamond-bottom', type=('build', 'link', 'run')) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond/package.py index 9a441a953bf..90afdd24000 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond/package.py @@ -15,6 +15,3 @@ class DtDiamond(Package): depends_on('dt-diamond-left') depends_on('dt-diamond-right') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtbuild1/package.py b/var/spack/repos/builtin.mock/packages/dtbuild1/package.py index 07e86bb3e0e..f1921ad43f9 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild1/package.py @@ -18,6 +18,3 @@ class Dtbuild1(Package): depends_on('dtbuild2', type='build') depends_on('dtlink2') depends_on('dtrun2', type='run') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtbuild2/package.py b/var/spack/repos/builtin.mock/packages/dtbuild2/package.py index 752a34c900d..cf783ccd9ba 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild2/package.py @@ -13,6 +13,3 @@ class Dtbuild2(Package): url = "http://www.example.com/dtbuild2-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtbuild3/package.py b/var/spack/repos/builtin.mock/packages/dtbuild3/package.py index 23fd06bcb94..1b8f89a2da1 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild3/package.py @@ -13,6 +13,3 @@ class Dtbuild3(Package): url = "http://www.example.com/dtbuild3-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink1/package.py b/var/spack/repos/builtin.mock/packages/dtlink1/package.py index 02355913812..725d3b20616 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink1/package.py @@ -15,6 +15,3 @@ class Dtlink1(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dtlink3') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink2/package.py b/var/spack/repos/builtin.mock/packages/dtlink2/package.py index 1f629d3d6ba..b4d871a8418 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink2/package.py @@ -13,6 +13,3 @@ class Dtlink2(Package): url = "http://www.example.com/dtlink2-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink3/package.py b/var/spack/repos/builtin.mock/packages/dtlink3/package.py index dc0d2532ec2..732b68f8670 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink3/package.py @@ -16,6 +16,3 @@ class Dtlink3(Package): depends_on('dtbuild2', type='build') depends_on('dtlink4') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink4/package.py b/var/spack/repos/builtin.mock/packages/dtlink4/package.py index 2ec4ddd7e21..d7ac8115ad2 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink4/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink4/package.py @@ -13,6 +13,3 @@ class Dtlink4(Package): url = "http://www.example.com/dtlink4-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink5/package.py b/var/spack/repos/builtin.mock/packages/dtlink5/package.py index cb191f32f04..faf429bfc1d 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink5/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink5/package.py @@ -13,6 +13,3 @@ class Dtlink5(Package): url = "http://www.example.com/dtlink5-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtrun1/package.py b/var/spack/repos/builtin.mock/packages/dtrun1/package.py index fcc26022cab..617d9f3b8aa 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun1/package.py @@ -16,6 +16,3 @@ class Dtrun1(Package): depends_on('dtlink5') depends_on('dtrun3', type='run') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtrun2/package.py b/var/spack/repos/builtin.mock/packages/dtrun2/package.py index f455af1bb73..1ba63a2822e 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun2/package.py @@ -13,6 +13,3 @@ class Dtrun2(Package): url = "http://www.example.com/dtrun2-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtrun3/package.py b/var/spack/repos/builtin.mock/packages/dtrun3/package.py index c884ef6b464..c1caea1ddec 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun3/package.py @@ -15,6 +15,3 @@ class Dtrun3(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dtbuild3', type='build') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dttop/package.py b/var/spack/repos/builtin.mock/packages/dttop/package.py index 225af9fee4f..120e70e40c3 100644 --- a/var/spack/repos/builtin.mock/packages/dttop/package.py +++ b/var/spack/repos/builtin.mock/packages/dttop/package.py @@ -17,6 +17,3 @@ class Dttop(Package): depends_on('dtbuild1', type='build') depends_on('dtlink1') depends_on('dtrun1', type='run') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtuse/package.py b/var/spack/repos/builtin.mock/packages/dtuse/package.py index 083cb1ba76f..0a5836d0f8a 100644 --- a/var/spack/repos/builtin.mock/packages/dtuse/package.py +++ b/var/spack/repos/builtin.mock/packages/dtuse/package.py @@ -15,6 +15,3 @@ class Dtuse(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dttop') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/e/package.py b/var/spack/repos/builtin.mock/packages/e/package.py index c85c78e137f..d52db11abe9 100644 --- a/var/spack/repos/builtin.mock/packages/e/package.py +++ b/var/spack/repos/builtin.mock/packages/e/package.py @@ -13,6 +13,3 @@ class E(Package): url = "http://www.example.com/e-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/externalmodule/package.py b/var/spack/repos/builtin.mock/packages/externalmodule/package.py index f871762c7e4..675edbc23dc 100644 --- a/var/spack/repos/builtin.mock/packages/externalmodule/package.py +++ b/var/spack/repos/builtin.mock/packages/externalmodule/package.py @@ -13,6 +13,3 @@ class Externalmodule(Package): version('1.0', '1234567890abcdef1234567890abcdef') depends_on('externalprereq') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/externalprereq/package.py b/var/spack/repos/builtin.mock/packages/externalprereq/package.py index 866df9f838a..595bc8b3b71 100644 --- a/var/spack/repos/builtin.mock/packages/externalprereq/package.py +++ b/var/spack/repos/builtin.mock/packages/externalprereq/package.py @@ -11,6 +11,3 @@ class Externalprereq(Package): url = "http://somewhere.com/prereq-1.0.tar.gz" version('1.4', 'f1234567890abcdef1234567890abcde') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/externaltool/package.py b/var/spack/repos/builtin.mock/packages/externaltool/package.py index 2d6caef35d2..4677dfeda9b 100644 --- a/var/spack/repos/builtin.mock/packages/externaltool/package.py +++ b/var/spack/repos/builtin.mock/packages/externaltool/package.py @@ -14,6 +14,3 @@ class Externaltool(Package): version('0.9', '1234567890abcdef1234567890abcdef') depends_on('externalprereq') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/externalvirtual/package.py b/var/spack/repos/builtin.mock/packages/externalvirtual/package.py index e16997dbd8e..aace40767d0 100644 --- a/var/spack/repos/builtin.mock/packages/externalvirtual/package.py +++ b/var/spack/repos/builtin.mock/packages/externalvirtual/package.py @@ -16,6 +16,3 @@ class Externalvirtual(Package): version('2.2', '4567890abcdef1234567890abcdef123') provides('stuff', when='@1.0:') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/fake/package.py b/var/spack/repos/builtin.mock/packages/fake/package.py index e022af1766d..16ff3c6dd67 100644 --- a/var/spack/repos/builtin.mock/packages/fake/package.py +++ b/var/spack/repos/builtin.mock/packages/fake/package.py @@ -11,6 +11,3 @@ class Fake(Package): url = "http://www.fake-spack-example.org/downloads/fake-1.0.tar.gz" version('1.0', 'foobarbaz') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/flake8/package.py b/var/spack/repos/builtin.mock/packages/flake8/package.py index 2de7bd8e128..c548ca69b22 100644 --- a/var/spack/repos/builtin.mock/packages/flake8/package.py +++ b/var/spack/repos/builtin.mock/packages/flake8/package.py @@ -58,7 +58,11 @@ def install(self, spec, prefix): if 'really-long-if-statement' != 'that-goes-over-the-line-length-limit-and-requires-noqa': # noqa pass + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + # '@when' decorated functions are exempt from redefinition errors @when('@2.0') def install(self, spec, prefix): - pass + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin.mock/packages/git-svn-top-level/package.py b/var/spack/repos/builtin.mock/packages/git-svn-top-level/package.py index 72e7b1fe89b..e9acff3c6d8 100644 --- a/var/spack/repos/builtin.mock/packages/git-svn-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/git-svn-top-level/package.py @@ -15,6 +15,3 @@ class GitSvnTopLevel(Package): svn = 'https://example.com/some/svn/repo' version('2.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/git-test/package.py b/var/spack/repos/builtin.mock/packages/git-test/package.py index a5aa4286644..8430966282b 100644 --- a/var/spack/repos/builtin.mock/packages/git-test/package.py +++ b/var/spack/repos/builtin.mock/packages/git-test/package.py @@ -11,6 +11,3 @@ class GitTest(Package): homepage = "http://www.git-fetch-example.com" version('git', git='to-be-filled-in-by-test') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/git-top-level/package.py b/var/spack/repos/builtin.mock/packages/git-top-level/package.py index 1e511628f32..ba80263224e 100644 --- a/var/spack/repos/builtin.mock/packages/git-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/git-top-level/package.py @@ -12,6 +12,3 @@ class GitTopLevel(Package): git = 'https://example.com/some/git/repo' version('1.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/git-url-svn-top-level/package.py b/var/spack/repos/builtin.mock/packages/git-url-svn-top-level/package.py index e1c7476e3bb..b998c0f0145 100644 --- a/var/spack/repos/builtin.mock/packages/git-url-svn-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/git-url-svn-top-level/package.py @@ -16,6 +16,3 @@ class GitUrlSvnTopLevel(Package): svn = 'https://example.com/some/svn/repo' version('2.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/git-url-top-level/package.py b/var/spack/repos/builtin.mock/packages/git-url-top-level/package.py index 2eacba15b73..d93ead7bee9 100644 --- a/var/spack/repos/builtin.mock/packages/git-url-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/git-url-top-level/package.py @@ -38,6 +38,3 @@ class GitUrlTopLevel(Package): version('1.2', sha512='abc12', branch='releases/v1.2') version('1.1', md5='abc11', tag='v1.1') version('1.0', 'abc11', tag='abc123') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/hash-test1/package.py b/var/spack/repos/builtin.mock/packages/hash-test1/package.py index db3616145b8..c46f2339ba0 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test1/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test1/package.py @@ -3,10 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * - import os +from spack import * + class HashTest1(Package): """Used to test package hashing @@ -37,10 +37,16 @@ def install(self, spec, prefix): print("install 1") os.listdir(os.getcwd()) + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + @when('@1.5:') def install(self, spec, prefix): os.listdir(os.getcwd()) + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + @when('@1.5,1.6') def extra_phase(self, spec, prefix): pass diff --git a/var/spack/repos/builtin.mock/packages/hash-test2/package.py b/var/spack/repos/builtin.mock/packages/hash-test2/package.py index 859eb86c95c..2358cd66e22 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test2/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test2/package.py @@ -3,10 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * - import os +from spack import * + class HashTest2(Package): """Used to test package hashing @@ -31,3 +31,6 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): def install(self, spec, prefix): print("install 1") os.listdir(os.getcwd()) + + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin.mock/packages/hash-test3/package.py b/var/spack/repos/builtin.mock/packages/hash-test3/package.py index 7c452c3ba17..e943bd46c7e 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test3/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test3/package.py @@ -3,10 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * - import os +from spack import * + class HashTest3(Package): """Used to test package hashing @@ -32,10 +32,16 @@ def install(self, spec, prefix): print("install 1") os.listdir(os.getcwd()) + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + @when('@1.5:') def install(self, spec, prefix): os.listdir(os.getcwd()) + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + for _version_constraint in ['@1.5', '@1.6']: @when(_version_constraint) def extra_phase(self, spec, prefix): diff --git a/var/spack/repos/builtin.mock/packages/hg-test/package.py b/var/spack/repos/builtin.mock/packages/hg-test/package.py index ede967ce0c4..67970d42722 100644 --- a/var/spack/repos/builtin.mock/packages/hg-test/package.py +++ b/var/spack/repos/builtin.mock/packages/hg-test/package.py @@ -11,6 +11,3 @@ class HgTest(Package): homepage = "http://www.hg-fetch-example.com" version('hg', hg='to-be-filled-in-by-test') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/hg-top-level/package.py b/var/spack/repos/builtin.mock/packages/hg-top-level/package.py index 6f402c801b1..0f239725925 100644 --- a/var/spack/repos/builtin.mock/packages/hg-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/hg-top-level/package.py @@ -12,6 +12,3 @@ class HgTopLevel(Package): hg = 'https://example.com/some/hg/repo' version('1.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/hypre/package.py b/var/spack/repos/builtin.mock/packages/hypre/package.py index 27c641017a4..bf48afd9716 100644 --- a/var/spack/repos/builtin.mock/packages/hypre/package.py +++ b/var/spack/repos/builtin.mock/packages/hypre/package.py @@ -16,6 +16,3 @@ class Hypre(Package): depends_on('lapack') depends_on('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py b/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py index 5a06f77dd31..34bf4c64a08 100644 --- a/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py @@ -18,6 +18,3 @@ class IndirectMpich(Package): depends_on('mpi') depends_on('direct-mpich') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/maintainers-1/package.py b/var/spack/repos/builtin.mock/packages/maintainers-1/package.py index 7942ff3de74..4c223548ddf 100644 --- a/var/spack/repos/builtin.mock/packages/maintainers-1/package.py +++ b/var/spack/repos/builtin.mock/packages/maintainers-1/package.py @@ -15,6 +15,3 @@ class Maintainers1(Package): maintainers = ['user1', 'user2'] version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/maintainers-2/package.py b/var/spack/repos/builtin.mock/packages/maintainers-2/package.py index d16f9e30a6e..81214618587 100644 --- a/var/spack/repos/builtin.mock/packages/maintainers-2/package.py +++ b/var/spack/repos/builtin.mock/packages/maintainers-2/package.py @@ -15,6 +15,3 @@ class Maintainers2(Package): maintainers = ['user2', 'user3'] version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/mixedversions/package.py b/var/spack/repos/builtin.mock/packages/mixedversions/package.py index 446278403b4..e0c61ed089d 100644 --- a/var/spack/repos/builtin.mock/packages/mixedversions/package.py +++ b/var/spack/repos/builtin.mock/packages/mixedversions/package.py @@ -12,6 +12,3 @@ class Mixedversions(Package): version('2.0.1', 'hashc') version('2.0', 'hashb') version('1.0.1', 'hasha') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/module-path-separator/package.py b/var/spack/repos/builtin.mock/packages/module-path-separator/package.py index bb65705d1c6..3b4e2ca9d0a 100644 --- a/var/spack/repos/builtin.mock/packages/module-path-separator/package.py +++ b/var/spack/repos/builtin.mock/packages/module-path-separator/package.py @@ -12,9 +12,6 @@ class ModulePathSeparator(Package): version(1.0, 'foobarbaz') - def install(self, spec, prefix): - pass - def setup_environment(self, senv, renv): renv.append_path("COLON", "foo") renv.prepend_path("COLON", "foo") diff --git a/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py b/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py index 93babae83d7..69995b75203 100644 --- a/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py +++ b/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py @@ -27,6 +27,3 @@ class MultiProviderMpi(Package): provides('mpi@3.0', when='@1.10.0') provides('mpi@3.0', when='@1.8.8') provides('mpi@2.2', when='@1.6.5') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/multimodule-inheritance/package.py b/var/spack/repos/builtin.mock/packages/multimodule-inheritance/package.py index 8a3aeb00998..4343b03fe56 100644 --- a/var/spack/repos/builtin.mock/packages/multimodule-inheritance/package.py +++ b/var/spack/repos/builtin.mock/packages/multimodule-inheritance/package.py @@ -15,6 +15,3 @@ class MultimoduleInheritance(si.BaseWithDirectives): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('openblas', when='+openblas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py index 3e3732aa841..22d0ea1d97e 100644 --- a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py +++ b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py @@ -33,6 +33,3 @@ class MultivalueVariant(Package): depends_on('callpath') depends_on('a') depends_on('a@1.0', when='fee=barbaz') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/netlib-blas/package.py b/var/spack/repos/builtin.mock/packages/netlib-blas/package.py index c4e8231d8f9..4a759b61455 100644 --- a/var/spack/repos/builtin.mock/packages/netlib-blas/package.py +++ b/var/spack/repos/builtin.mock/packages/netlib-blas/package.py @@ -13,6 +13,3 @@ class NetlibBlas(Package): version('3.5.0', 'b1d3e3e425b2e44a06760ff173104bdf') provides('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py b/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py index d1a461d32c7..b9c69bf66c2 100644 --- a/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py @@ -14,6 +14,3 @@ class NetlibLapack(Package): provides('lapack') depends_on('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/nosource-install/package.py b/var/spack/repos/builtin.mock/packages/nosource-install/package.py index 74e95e75b0e..dc4e2755dbb 100644 --- a/var/spack/repos/builtin.mock/packages/nosource-install/package.py +++ b/var/spack/repos/builtin.mock/packages/nosource-install/package.py @@ -3,10 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - -import os from spack import * -from llnl.util.filesystem import touch class NosourceInstall(BundlePackage): @@ -24,8 +21,8 @@ class NosourceInstall(BundlePackage): # The install method must also be present. def install(self, spec, prefix): - touch(os.path.join(self.prefix, 'install.txt')) + touch(join_path(self.prefix, 'install.txt')) @run_after('install') def post_install(self): - touch(os.path.join(self.prefix, 'post-install.txt')) + touch(join_path(self.prefix, 'post-install.txt')) diff --git a/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py b/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py index 7bfea42eff2..997049af562 100644 --- a/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py @@ -15,6 +15,3 @@ class OpenblasWithLapack(Package): provides('lapack') provides('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/openblas/package.py b/var/spack/repos/builtin.mock/packages/openblas/package.py index 6947e3156f4..ff4bda9a277 100644 --- a/var/spack/repos/builtin.mock/packages/openblas/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas/package.py @@ -14,6 +14,3 @@ class Openblas(Package): version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9') provides('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py index 585840a5b36..64437ae3379 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py @@ -19,6 +19,3 @@ class OptionalDepTest2(Package): depends_on('optional-dep-test', when='+odt') depends_on('optional-dep-test+mpi', when='+mpi') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py index 3529e9df5fb..1261a117a97 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py @@ -18,6 +18,3 @@ class OptionalDepTest3(Package): depends_on('a', when='~var') depends_on('b', when='+var') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py index 363512c072d..9a39e1a6246 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py @@ -30,6 +30,3 @@ class OptionalDepTest(Package): depends_on('mpi', when='^g') depends_on('mpi', when='+mpi') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/othervirtual/package.py b/var/spack/repos/builtin.mock/packages/othervirtual/package.py index d4cd1f4a2c2..c2c091af5cc 100644 --- a/var/spack/repos/builtin.mock/packages/othervirtual/package.py +++ b/var/spack/repos/builtin.mock/packages/othervirtual/package.py @@ -13,6 +13,3 @@ class Othervirtual(Package): version('1.0', '67890abcdef1234567890abcdef12345') provides('stuff') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/override-context-templates/package.py b/var/spack/repos/builtin.mock/packages/override-context-templates/package.py index d67eabdeb8b..08f4d088286 100644 --- a/var/spack/repos/builtin.mock/packages/override-context-templates/package.py +++ b/var/spack/repos/builtin.mock/packages/override-context-templates/package.py @@ -18,6 +18,3 @@ class OverrideContextTemplates(Package): tcl_template = 'extension.tcl' tcl_context = {'sentence': "sentence from package"} - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/override-module-templates/package.py b/var/spack/repos/builtin.mock/packages/override-module-templates/package.py index 90061399e8e..2ed7d0e1e01 100644 --- a/var/spack/repos/builtin.mock/packages/override-module-templates/package.py +++ b/var/spack/repos/builtin.mock/packages/override-module-templates/package.py @@ -14,6 +14,3 @@ class OverrideModuleTemplates(Package): tcl_template = 'override.txt' lmod_template = 'override.txt' - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/patch-a-dependency/package.py b/var/spack/repos/builtin.mock/packages/patch-a-dependency/package.py index aff2bf9722e..cd5c54ad5fe 100644 --- a/var/spack/repos/builtin.mock/packages/patch-a-dependency/package.py +++ b/var/spack/repos/builtin.mock/packages/patch-a-dependency/package.py @@ -15,6 +15,3 @@ class PatchADependency(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('libelf', patches=patch('libelf.patch')) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py b/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py index 9d190c76587..3cda48479e1 100644 --- a/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py +++ b/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py @@ -36,6 +36,3 @@ class PatchSeveralDependencies(Package): archive_sha256='abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd', sha256='1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd') ]) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/patch/package.py b/var/spack/repos/builtin.mock/packages/patch/package.py index 8219a4fbb6e..d0283cc33c0 100644 --- a/var/spack/repos/builtin.mock/packages/patch/package.py +++ b/var/spack/repos/builtin.mock/packages/patch/package.py @@ -21,6 +21,3 @@ class Patch(Package): patch('bar.patch', when='@2:') patch('baz.patch') patch('biz.patch', when='@1.0.1:1.0.2') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/perl/package.py b/var/spack/repos/builtin.mock/packages/perl/package.py index b9f75270bfb..2f495c1a970 100644 --- a/var/spack/repos/builtin.mock/packages/perl/package.py +++ b/var/spack/repos/builtin.mock/packages/perl/package.py @@ -13,6 +13,3 @@ class Perl(Package): extendable = True version('0.0.0', 'hash') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/preferred-test/package.py b/var/spack/repos/builtin.mock/packages/preferred-test/package.py index 09e5aa034a0..55121c76a61 100644 --- a/var/spack/repos/builtin.mock/packages/preferred-test/package.py +++ b/var/spack/repos/builtin.mock/packages/preferred-test/package.py @@ -15,6 +15,3 @@ class PreferredTest(Package): version('0.2.16', 'b1190f3d3471685f17cfd1ec1d252ac9') version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9', preferred=True) version('0.2.14', 'b1190f3d3471685f17cfd1ec1d252ac9') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/python/package.py b/var/spack/repos/builtin.mock/packages/python/package.py index b15a9fd38aa..e846572121d 100644 --- a/var/spack/repos/builtin.mock/packages/python/package.py +++ b/var/spack/repos/builtin.mock/packages/python/package.py @@ -19,6 +19,3 @@ class Python(Package): version('2.7.10', 'd7547558fd673bd9d38e2108c6b42521') version('2.7.9', '5eebcaa0030dc4061156d3429657fb83') version('2.7.8', 'd4bca0159acb0b44a781292b5231936f') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/simple-inheritance/package.py b/var/spack/repos/builtin.mock/packages/simple-inheritance/package.py index a6f29f5ed5d..8d655708990 100644 --- a/var/spack/repos/builtin.mock/packages/simple-inheritance/package.py +++ b/var/spack/repos/builtin.mock/packages/simple-inheritance/package.py @@ -30,6 +30,3 @@ class SimpleInheritance(BaseWithDirectives): depends_on('openblas', when='+openblas') provides('lapack', when='+openblas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py index 640594f0edf..5507fbdc21f 100644 --- a/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py +++ b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py @@ -15,6 +15,3 @@ class SinglevalueVariantDependent(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('multivalue_variant fee=baz') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/svn-test/package.py b/var/spack/repos/builtin.mock/packages/svn-test/package.py index c982bb06497..dec6d4a4131 100644 --- a/var/spack/repos/builtin.mock/packages/svn-test/package.py +++ b/var/spack/repos/builtin.mock/packages/svn-test/package.py @@ -11,6 +11,3 @@ class SvnTest(Package): url = "http://www.example.com/svn-test-1.0.tar.gz" version('svn', svn='to-be-filled-in-by-test') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/svn-top-level/package.py b/var/spack/repos/builtin.mock/packages/svn-top-level/package.py index 83588e97b38..0da7f9656d8 100644 --- a/var/spack/repos/builtin.mock/packages/svn-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/svn-top-level/package.py @@ -11,6 +11,3 @@ class SvnTopLevel(Package): svn = 'https://example.com/some/svn/repo' version('1.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/url-list-test/package.py b/var/spack/repos/builtin.mock/packages/url-list-test/package.py index 4a9bd1fc56c..02e1f4747f4 100644 --- a/var/spack/repos/builtin.mock/packages/url-list-test/package.py +++ b/var/spack/repos/builtin.mock/packages/url-list-test/package.py @@ -5,7 +5,6 @@ from spack import * -import os import spack.paths @@ -13,7 +12,7 @@ class UrlListTest(Package): """Mock package with url_list.""" homepage = "http://www.url-list-example.com" - web_data_path = os.path.join(spack.paths.test_path, 'data', 'web') + web_data_path = join_path(spack.paths.test_path, 'data', 'web') url = 'file://' + web_data_path + '/foo-0.0.0.tar.gz' list_url = 'file://' + web_data_path + '/index.html' list_depth = 3 @@ -25,6 +24,3 @@ class UrlListTest(Package): version('2.0.0b2', 'abc200b2') version('3.0a1', 'abc30a1') version('4.5-rc5', 'abc45rc5') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/url-test/package.py b/var/spack/repos/builtin.mock/packages/url-test/package.py index 6a7d2b94169..1deee5515d9 100644 --- a/var/spack/repos/builtin.mock/packages/url-test/package.py +++ b/var/spack/repos/builtin.mock/packages/url-test/package.py @@ -11,6 +11,3 @@ class UrlTest(Package): homepage = "http://www.url-fetch-example.com" version('test', url='to-be-filled-in-by-test') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/when-directives-false/package.py b/var/spack/repos/builtin.mock/packages/when-directives-false/package.py index 105caeccdf9..f701e753de8 100644 --- a/var/spack/repos/builtin.mock/packages/when-directives-false/package.py +++ b/var/spack/repos/builtin.mock/packages/when-directives-false/package.py @@ -23,6 +23,3 @@ class WhenDirectivesFalse(Package): resource(url="http://www.example.com/example-1.0-resource.tar.gz", md5='0123456789abcdef0123456789abcdef', when=False) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/when-directives-true/package.py b/var/spack/repos/builtin.mock/packages/when-directives-true/package.py index 50dd5a00f4a..6f8f7ed7c1a 100644 --- a/var/spack/repos/builtin.mock/packages/when-directives-true/package.py +++ b/var/spack/repos/builtin.mock/packages/when-directives-true/package.py @@ -23,6 +23,3 @@ class WhenDirectivesTrue(Package): resource(url="http://www.example.com/example-1.0-resource.tar.gz", md5='0123456789abcdef0123456789abcdef', when=True) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/zmpi/package.py b/var/spack/repos/builtin.mock/packages/zmpi/package.py index f0060b319ed..c9caa9a20f9 100644 --- a/var/spack/repos/builtin.mock/packages/zmpi/package.py +++ b/var/spack/repos/builtin.mock/packages/zmpi/package.py @@ -16,6 +16,3 @@ class Zmpi(Package): provides('mpi@:10.0') depends_on('fake') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin/packages/apple-libunwind/package.py b/var/spack/repos/builtin/packages/apple-libunwind/package.py index 0b7d8cc1cb2..9d1db5cca86 100644 --- a/var/spack/repos/builtin/packages/apple-libunwind/package.py +++ b/var/spack/repos/builtin/packages/apple-libunwind/package.py @@ -43,7 +43,8 @@ def fetcher(self): raise InstallError(msg) def install(self, spec, prefix): - pass + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.lib) @property def libs(self): From 14025e89f63327bac5bbab081b227411ffda4623 Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Wed, 19 Feb 2020 11:41:02 -0600 Subject: [PATCH 137/238] Buildcache: join rpaths returned by get_existing_elf_rpaths with ':'. (#15086) This reproduces the behavior expected by patchelf_is_relocatable test. --- lib/spack/spack/relocate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py index 87de08c9b27..6847127efba 100644 --- a/lib/spack/spack/relocate.py +++ b/lib/spack/spack/relocate.py @@ -693,7 +693,7 @@ def file_is_relocatable(file, paths_to_relocate=None): if platform.system().lower() == 'linux': if m_subtype == 'x-executable' or m_subtype == 'x-sharedlib': - rpaths = set(get_existing_elf_rpaths(file)) + rpaths = ':'.join(get_existing_elf_rpaths(file)) set_of_strings.discard(rpaths) if platform.system().lower() == 'darwin': if m_subtype == 'x-mach-binary': From 2dac7b60a9ac07838c1291ca5038a9c86c16b50e Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Wed, 19 Feb 2020 13:50:32 -0500 Subject: [PATCH 138/238] Fix gcc 8.3 build on macOS 10.14 (#15089) --- var/spack/repos/builtin/packages/gcc/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index df87800ff29..2c38296f11f 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -197,6 +197,12 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage): # https://trac.macports.org/ticket/56502#no1 # see also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83531 patch('darwin/headers-10.13-fix.patch', when='@5.5.0') + if macos_version() >= Version('10.14'): + # Fix system headers for Mojave SDK: + # https://github.com/Homebrew/homebrew-core/pull/39041 + patch('https://raw.githubusercontent.com/Homebrew/formula-patches/master/gcc/8.3.0-xcode-bug-_Atomic-fix.patch', + sha256='33ee92bf678586357ee8ab9d2faddf807e671ad37b97afdd102d5d153d03ca84', + when='@6:8') if macos_version() >= Version('10.15'): # Fix system headers for Catalina SDK # (otherwise __OSX_AVAILABLE_STARTING ends up undefined) From e9862671c97c37c217d7e68d106c10fb75b0e797 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 19:56:57 +0100 Subject: [PATCH 139/238] Add extra version of py-pyzmq (#15080) --- var/spack/repos/builtin/packages/py-pyzmq/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pyzmq/package.py b/var/spack/repos/builtin/packages/py-pyzmq/package.py index 6f62a3bf3e9..9cd9e462428 100644 --- a/var/spack/repos/builtin/packages/py-pyzmq/package.py +++ b/var/spack/repos/builtin/packages/py-pyzmq/package.py @@ -12,6 +12,7 @@ class PyPyzmq(PythonPackage): url = "https://github.com/zeromq/pyzmq/archive/v14.7.0.tar.gz" version('18.1.0', sha256='32f7618b8104021bc96cbd60be4330bdf37b929e8061dbce362c9f3478a08e21') + version('18.0.1', sha256='7b0107992d8cc4c43d9af1c2e13d573ea761c7feb23d7e0e7da9dc963811e68f') version('17.1.2', sha256='77a32350440e321466b1748e6063b34a8a73768b62cb674e7d799fbc654b7c45') version('16.0.2', sha256='717dd902c3cf432b1c68e7b299ad028b0de0d0a823858e440b81d5f1baa2b1c1') version('14.7.0', sha256='809a5fcc720d286c840f7f64696e60322b5b2544795a73db626f09b344d16a15') From eac6c53afb50b7f8a778d75831ae7fc040c92a7c Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 19:59:03 +0100 Subject: [PATCH 140/238] Add extra version of py-dask; add new variant and dependencies (#14973) * Add extra version of py-dask * Update package.py * Add extra dependencies for py-dask+distributed * Update package.py * Update var/spack/repos/builtin/packages/py-heapdict/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-heapdict/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-distributed/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-distributed/package.py Co-Authored-By: Adam J. Stewart * Update package.py * Update package.py * Update package.py * Update package.py * Update var/spack/repos/builtin/packages/py-distributed/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-distributed/package.py Co-Authored-By: Adam J. Stewart * Update package.py * Update var/spack/repos/builtin/packages/py-distributed/package.py Co-Authored-By: Adam J. Stewart * Update package.py * Flake-8 * Add patch step for py-distributed Co-authored-by: Adam J. Stewart --- .../repos/builtin/packages/py-dask/package.py | 11 ++++++ .../packages/py-distributed/package.py | 37 +++++++++++++++++++ .../builtin/packages/py-heapdict/package.py | 18 +++++++++ .../repos/builtin/packages/py-zict/package.py | 18 +++++++++ 4 files changed, 84 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-distributed/package.py create mode 100644 var/spack/repos/builtin/packages/py-heapdict/package.py create mode 100644 var/spack/repos/builtin/packages/py-zict/package.py diff --git a/var/spack/repos/builtin/packages/py-dask/package.py b/var/spack/repos/builtin/packages/py-dask/package.py index 6b44f935af2..4967306f63d 100644 --- a/var/spack/repos/builtin/packages/py-dask/package.py +++ b/var/spack/repos/builtin/packages/py-dask/package.py @@ -12,6 +12,7 @@ class PyDask(PythonPackage): homepage = "https://github.com/dask/dask/" url = "https://pypi.io/packages/source/d/dask/dask-1.1.0.tar.gz" + version('1.2.2', sha256='5e7876bae2a01b355d1969b73aeafa23310febd8c353163910b73e93dc7e492c') version('1.1.2', sha256='93b355b9a9c9a3ddbb39fab99d5759aad5cfd346f4520b87788970e80cf97256') version('1.1.0', sha256='e76088e8931b326c05a92d2658e07b94a6852b42c13a7560505a8b2354871454') version('0.17.4', sha256='c111475a3d1f8cba41c8094e1fb1831c65015390dcef0308042a11a9606a2f6d') @@ -21,13 +22,18 @@ class PyDask(PythonPackage): variant('bag', default=True, description='Install requirements for dask.bag') variant('dataframe', default=True, description='Install requirements for dask.dataframe') variant('delayed', default=True, description='Install requirements for dask.delayed') + variant('distributed', default=True, description='Install requirements for dask.distributed') + + conflicts('+distributed', when='@:1.2.1') # Only present in 1.2.2+ depends_on('py-setuptools', type='build') depends_on('py-pytest@3.1.0:', type='test') depends_on('py-requests', type='test') + depends_on('py-pytest-runner', type='test') # Requirements for dask.array depends_on('py-numpy@1.11.0:', type=('build', 'run'), when='+array') + depends_on('py-numpy@1.13.0:', type=('build', 'run'), when='@1.2.2: +array') depends_on('py-toolz@0.7.3:', type=('build', 'run'), when='+array') # Requirements for dask.bag @@ -37,7 +43,9 @@ class PyDask(PythonPackage): # Requirements for dask.dataframe depends_on('py-numpy@1.11.0:', type=('build', 'run'), when='+dataframe') + depends_on('py-numpy@1.13.0:', type=('build', 'run'), when='@1.2.2: +dataframe') depends_on('py-pandas@0.19.0:', type=('build', 'run'), when='+dataframe') + depends_on('py-pandas@0.21.0:', type=('build', 'run'), when='@1.2.2: +dataframe') depends_on('py-toolz@0.7.3:', type=('build', 'run'), when='+dataframe') depends_on('py-partd@0.3.8:', type=('build', 'run'), when='+dataframe') depends_on('py-cloudpickle@0.2.1:', type=('build', 'run'), when='+dataframe') @@ -45,6 +53,9 @@ class PyDask(PythonPackage): # Requirements for dask.delayed depends_on('py-toolz@0.7.3:', type=('build', 'run'), when='+delayed') + # Requirements for dask.distributed + depends_on('py-distributed@1.22:', type=('build', 'run'), when='+distributed') + @property def import_modules(self): modules = [ diff --git a/var/spack/repos/builtin/packages/py-distributed/package.py b/var/spack/repos/builtin/packages/py-distributed/package.py new file mode 100644 index 00000000000..be4fb3b1c6d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-distributed/package.py @@ -0,0 +1,37 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class PyDistributed(PythonPackage): + """Distributed scheduler for Dask""" + + homepage = "https://distributed.dask.org/" + url = "https://pypi.io/packages/source/d/distributed/distributed-2.10.0.tar.gz" + + version('2.10.0', sha256='2f8cca741a20f776929cbad3545f2df64cf60207fb21f774ef24aad6f6589e8b') + version('1.28.1', sha256='3bd83f8b7eb5938af5f2be91ccff8984630713f36f8f66097e531a63f141c48a') + + depends_on('python@2.7:2.8,3.5:', when='@:1', type=('build', 'run')) + depends_on('python@3.6:', when='@2:', type=('build', 'run')) + depends_on('py-setuptools', type=('build', 'run')) + + depends_on('py-click@6.6:', type=('build', 'run')) + depends_on('py-cloudpickle@0.2.2:', type=('build', 'run')) + depends_on('py-msgpack', type=('build', 'run')) + depends_on('py-psutil@5.0:', type=('build', 'run')) + depends_on('py-six', type=('build', 'run'), when='@:1') + depends_on('py-sortedcontainers@:1.999,2.0.2:', type=('build', 'run')) + depends_on('py-tblib', type=('build', 'run')) + depends_on('py-toolz@0.7.4:', type=('build', 'run')) + depends_on('py-tornado@5:', type=('build', 'run')) + depends_on('py-zict@0.1.3:', type=('build', 'run')) + depends_on('py-pyyaml', type=('build', 'run')) + depends_on('py-futures', when='@:1 ^python@2.7:2.8', type=('build', 'run')) + depends_on('py-singledispatch', when='@:1 ^python@2.7:2.8', type=('build', 'run')) + + def patch(self): + filter_file('^dask .*', '', 'requirements.txt') diff --git a/var/spack/repos/builtin/packages/py-heapdict/package.py b/var/spack/repos/builtin/packages/py-heapdict/package.py new file mode 100644 index 00000000000..7333f24c7a9 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-heapdict/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 PyHeapdict(PythonPackage): + """A heap with decrease-key and increase-key operations""" + + homepage = "http://stutzbachenterprises.com/" + url = "https://pypi.io/packages/source/H/HeapDict/HeapDict-1.0.1.tar.gz" + + version('1.0.1', sha256='8495f57b3e03d8e46d5f1b2cc62ca881aca392fd5cc048dc0aa2e1a6d23ecdb6') + + depends_on('python@2.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-zict/package.py b/var/spack/repos/builtin/packages/py-zict/package.py new file mode 100644 index 00000000000..5830be23cf1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-zict/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 PyZict(PythonPackage): + """Mutable mapping tools""" + + homepage = "http://zict.readthedocs.io/en/latest/" + url = "https://pypi.io/packages/source/z/zict/zict-1.0.0.tar.gz" + + version('1.0.0', sha256='e34dd25ea97def518fb4c77f2c27078f3a7d6c965b0a3ac8fe5bdb0a8011a310') + + depends_on('py-setuptools', type='build') + depends_on('py-heapdict', type=('build', 'run')) From d3b1248c2d4d99bc9d681667ab3ff19329cbfa07 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 19:59:45 +0100 Subject: [PATCH 141/238] Add extra version of py-isort (#14988) * Add extra version of py-isort * Update package.py * Update package.py * Update var/spack/repos/builtin/packages/py-isort/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-isort/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-isort/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-isort/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/py-isort/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-isort/package.py b/var/spack/repos/builtin/packages/py-isort/package.py index bdb7d6eb05f..1446f709790 100644 --- a/var/spack/repos/builtin/packages/py-isort/package.py +++ b/var/spack/repos/builtin/packages/py-isort/package.py @@ -12,6 +12,13 @@ class PyIsort(PythonPackage): homepage = "https://github.com/timothycrosley/isort" url = "https://pypi.io/packages/source/i/isort/isort-4.2.15.tar.gz" + version('4.3.20', sha256='c40744b6bc5162bbb39c1257fe298b7a393861d50978b565f3ccd9cb9de0182a') version('4.2.15', sha256='79f46172d3a4e2e53e7016e663cc7a8b538bec525c36675fcfd2767df30b3983') - depends_on('py-setuptools', type='build') + depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-pytest', type='test') + depends_on('py-mock', type='test') + depends_on('python@2.6:2.8,3.3:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:', type=('build', 'run'), when='@4.3.0:') + depends_on('py-futures', type=('build', 'run'), when='@4.3.0: ^python@:3.1') + depends_on('py-backports-functools-lru-cache', type=('build', 'run'), when='@4.3.10: ^python@:3.1') From f46f238a339716e8221ec2ee1860a5e85d05de23 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:01:48 +0100 Subject: [PATCH 142/238] Add extra version of py-jedi (#14990) * Add extra version of py-jedi * Update package.py * Update package.py Correct dependency types * Update var/spack/repos/builtin/packages/py-jedi/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-jedi/package.py Co-Authored-By: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-jedi/package.py Co-Authored-By: Adam J. Stewart * Add py-parso package * Remove boilerplate from py-parso * Flake-8 Co-authored-by: Adam J. Stewart --- .../repos/builtin/packages/py-jedi/package.py | 12 ++++++++-- .../builtin/packages/py-parso/package.py | 23 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-parso/package.py diff --git a/var/spack/repos/builtin/packages/py-jedi/package.py b/var/spack/repos/builtin/packages/py-jedi/package.py index 2c95433aa31..009b4c9d65f 100644 --- a/var/spack/repos/builtin/packages/py-jedi/package.py +++ b/var/spack/repos/builtin/packages/py-jedi/package.py @@ -12,9 +12,17 @@ class PyJedi(PythonPackage): homepage = "https://github.com/davidhalter/jedi" url = "https://pypi.io/packages/source/j/jedi/jedi-0.9.0.tar.gz" - # unfortunately pypi.io only offers a .whl + version('0.13.3', sha256='2bb0603e3506f708e792c7f4ad8fc2a7a9d9c2d292a358fbbd58da531695595b') + # unfortunately pypi.io only offers a .whl for 0.10.0 version('0.10.0', sha256='d6a7344df9c80562c3f62199278004ccc7c5889be9f1a6aa5abde117ec085123', url='https://github.com/davidhalter/jedi/archive/v0.10.0.tar.gz') version('0.9.0', sha256='3b4c19fba31bdead9ab7350fb9fa7c914c59b0a807dcdd5c00a05feb85491d31') - depends_on('py-setuptools', type='build') + depends_on('py-setuptools', type=('build', 'run')) + depends_on('python@2.6:2.8,3.2:', type=('build', 'run'), when='@0.9.0') + depends_on('python@2.6:2.8,3.3:', type=('build', 'run'), when='@0.10.0') + depends_on('python@2.7:2.8,3.4:', type=('build', 'run'), when='@0.13.3') + depends_on('py-parso@0.1.0', type=('build', 'run'), when='@0.11.0') + depends_on('py-parso@0.1.1', type=('build', 'run'), when='@0.11.1') + depends_on('py-parso@0.2.0:', type=('build', 'run'), when='@0.12.0') + depends_on('py-parso@0.3.0:', type=('build', 'run'), when='@0.12.1:0.14.0') diff --git a/var/spack/repos/builtin/packages/py-parso/package.py b/var/spack/repos/builtin/packages/py-parso/package.py new file mode 100644 index 00000000000..3f54eca9cea --- /dev/null +++ b/var/spack/repos/builtin/packages/py-parso/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 PyParso(PythonPackage): + """Parso is a Python parser that supports error recovery and round-trip parsing + for different Python versions (in multiple Python versions). + Parso is also able to list multiple syntax errors + in your python file.""" + + homepage = "https://pypi.org/project/parso/" + url = "https://pypi.io/packages/source/p/parso/parso-0.6.1.tar.gz" + + version('0.6.1', sha256='56b2105a80e9c4df49de85e125feb6be69f49920e121406f15e7acde6c9dfc57') + + depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-pytest@3.0.7:', type='test') + depends_on('py-docopt', type='test') From 44c01e6b70ff475934f1805aae4abd5771593c14 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:25:23 +0100 Subject: [PATCH 143/238] Add extra version of py-pyyaml (#15078) --- var/spack/repos/builtin/packages/py-pyyaml/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pyyaml/package.py b/var/spack/repos/builtin/packages/py-pyyaml/package.py index d4059441cc8..d7a08ca1b8f 100644 --- a/var/spack/repos/builtin/packages/py-pyyaml/package.py +++ b/var/spack/repos/builtin/packages/py-pyyaml/package.py @@ -13,6 +13,7 @@ class PyPyyaml(PythonPackage): url = "https://pypi.io/packages/source/P/PyYAML/PyYAML-5.1.2.tar.gz" version('5.1.2', sha256='01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4') + version('5.1', sha256='436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95') version('3.13', sha256='3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf') version('3.12', sha256='592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab') version('3.11', sha256='c36c938a872e5ff494938b33b14aaa156cb439ec67548fcab3535bb78b0846e8') From 129256de52d73fb35f2bd3af95e597df3b2a81cb Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:25:45 +0100 Subject: [PATCH 144/238] Add extra version of py-pytz (#15077) --- var/spack/repos/builtin/packages/py-pytz/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pytz/package.py b/var/spack/repos/builtin/packages/py-pytz/package.py index 1143d0b5cb9..4e71e1e2ec8 100644 --- a/var/spack/repos/builtin/packages/py-pytz/package.py +++ b/var/spack/repos/builtin/packages/py-pytz/package.py @@ -15,6 +15,7 @@ class PyPytz(PythonPackage): import_modules = ['pytz'] version('2019.3', sha256='b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be') + version('2019.1', sha256='d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141') version('2018.4', sha256='c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749') version('2016.10', sha256='9a43e20aa537cfad8fe7a1715165c91cb4a6935d40947f2d070e4c80f2dcd22b') version('2016.6.1', sha256='6f57732f0f8849817e9853eb9d50d85d1ebb1404f702dbc44ee627c642a486ca') From dc46e219d1f1caf7d0d8e2bef9f6e640a60f96c3 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:26:18 +0100 Subject: [PATCH 145/238] Add extra version of py-pytest (#15073) --- var/spack/repos/builtin/packages/py-pytest/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pytest/package.py b/var/spack/repos/builtin/packages/py-pytest/package.py index c59d0878eaf..6b73737b21e 100644 --- a/var/spack/repos/builtin/packages/py-pytest/package.py +++ b/var/spack/repos/builtin/packages/py-pytest/package.py @@ -17,6 +17,7 @@ class PyPytest(PythonPackage): version('5.2.1', sha256='ca563435f4941d0cb34767301c27bc65c510cb82e90b9ecf9cb52dc2c63caaa0') version('5.1.1', sha256='c3d5020755f70c82eceda3feaf556af9a341334414a8eca521a18f463bcead88') version('4.6.5', sha256='8fc39199bdda3d9d025d3b1f4eb99a192c20828030ea7c9a0d2840721de7d347') + version('4.6.2', sha256='bea27a646a3d74cbbcf8d3d4a06b2dfc336baf3dc2cc85cf70ad0157e73e8322') version('4.3.0', sha256='067a1d4bf827ffdd56ad21bd46674703fce77c5957f6c1eef731f6146bfcef1c') version('3.7.2', sha256='3459a123ad5532852d36f6f4501dfe1acf4af1dd9541834a164666aa40395b02') version('3.7.1', sha256='86a8dbf407e437351cef4dba46736e9c5a6e3c3ac71b2e942209748e76ff2086') From 31f9b66e1877e1bd7046bbf4d98c6472b4c006fb Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:28:24 +0100 Subject: [PATCH 146/238] Add extra version of py-pyqt5 (#15071) --- var/spack/repos/builtin/packages/py-pyqt5/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pyqt5/package.py b/var/spack/repos/builtin/packages/py-pyqt5/package.py index b186a13ad2f..f70461a1b7f 100644 --- a/var/spack/repos/builtin/packages/py-pyqt5/package.py +++ b/var/spack/repos/builtin/packages/py-pyqt5/package.py @@ -27,6 +27,7 @@ class PyPyqt5(SIPPackage): ] version('5.13.0', sha256='0cdbffe5135926527b61cc3692dd301cd0328dd87eeaf1313e610787c46faff9') + version('5.12.3', sha256='0db0fa37debab147450f9e052286f7a530404e2aaddc438e97a7dcdf56292110') variant('qsci', default=False, description='Build with QScintilla python bindings') From 0c8738a86001140e4c829d36622b0826bff84a18 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:28:56 +0100 Subject: [PATCH 147/238] Add extra version of py-pyproj (#15070) --- var/spack/repos/builtin/packages/py-pyproj/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pyproj/package.py b/var/spack/repos/builtin/packages/py-pyproj/package.py index 8c66ff3aca6..3341359a9ad 100644 --- a/var/spack/repos/builtin/packages/py-pyproj/package.py +++ b/var/spack/repos/builtin/packages/py-pyproj/package.py @@ -17,6 +17,7 @@ class PyPyproj(PythonPackage): import_modules = ['pyproj'] version('2.2.0', sha256='0a4f793cc93539c2292638c498e24422a2ec4b25cb47545addea07724b2a56e5') + version('2.1.3', sha256='99c52788b01a7bb9a88024bf4d40965c0a66a93d654600b5deacf644775f424d') version('1.9.6', sha256='e0c02b1554b20c710d16d673817b2a89ff94738b0b537aead8ecb2edc4c4487b') version('1.9.5.1', sha256='53fa54c8fa8a1dfcd6af4bf09ce1aae5d4d949da63b90570ac5ec849efaf3ea8') From 3331b70f202d1834333c78979ef15becef0a04ea Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:29:43 +0100 Subject: [PATCH 148/238] Add extra version of py-pyparsing (#15069) --- var/spack/repos/builtin/packages/py-pyparsing/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pyparsing/package.py b/var/spack/repos/builtin/packages/py-pyparsing/package.py index 009831901dc..ea7efac809b 100644 --- a/var/spack/repos/builtin/packages/py-pyparsing/package.py +++ b/var/spack/repos/builtin/packages/py-pyparsing/package.py @@ -14,6 +14,7 @@ class PyPyparsing(PythonPackage): import_modules = ['pyparsing'] version('2.4.2', sha256='6f98a7b9397e206d78cc01df10131398f1c8b8510a2f4d97d9abd82e1aacdd80') + version('2.4.0', sha256='1873c03321fc118f4e9746baf201ff990ceb915f433f23b395f5580d1840cb2a') version('2.3.1', sha256='66c9268862641abcac4a96ba74506e594c884e3f57690a696d21ad8210ed667a') version('2.2.0', sha256='0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04') version('2.1.10', sha256='811c3e7b0031021137fc83e051795025fcb98674d07eb8fe922ba4de53d39188') From f9b857f1b070fdce514e124fd5d48cd9764fc577 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:32:23 +0100 Subject: [PATCH 149/238] Add extra version of py-pyasn1 (#15066) --- var/spack/repos/builtin/packages/py-pyasn1/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pyasn1/package.py b/var/spack/repos/builtin/packages/py-pyasn1/package.py index 3d4d9ab3a3f..ea95f328440 100644 --- a/var/spack/repos/builtin/packages/py-pyasn1/package.py +++ b/var/spack/repos/builtin/packages/py-pyasn1/package.py @@ -15,6 +15,7 @@ class PyPyasn1(PythonPackage): url = "https://pypi.io/packages/source/p/pyasn1/pyasn1-0.4.6.tar.gz" version('0.4.6', sha256='b773d5c9196ffbc3a1e13bdf909d446cad80a039aa3340bcad72f395b76ebc86') + version('0.4.5', sha256='da2420fe13a9452d8ae97a0e478adde1dee153b11ba832a95b223a2ba01c10f7') version('0.2.3', sha256='738c4ebd88a718e700ee35c8d129acce2286542daa80a82823a7073644f706ad') depends_on('python@2.4:', type=('build', 'run')) From 1d986c3790647382d19d6eef61447dee0b32aefc Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:34:56 +0100 Subject: [PATCH 150/238] Add extra version of py-pip (#15061) --- var/spack/repos/builtin/packages/py-pip/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index d9104ec4f95..df11d73806e 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -13,6 +13,7 @@ class PyPip(PythonPackage): url = "https://pypi.io/packages/source/p/pip/pip-19.3.tar.gz" version('19.3', sha256='324d234b8f6124846b4e390df255cacbe09ce22791c3b714aa1ea6e44a4f2861') + version('19.1.1', sha256='44d3d7d3d30a1eb65c7e5ff1173cdf8f7467850605ac7cc3707b6064bddd0958') version('19.0.3', sha256='6e6f197a1abfb45118dbb878b5c859a0edbdd33fd250100bc015b67fded4b9f2') version('18.1', sha256='c0a292bd977ef590379a3f05d7b7f65135487b67470f6281289a94e015650ea1') version('10.0.1', sha256='f2bd08e0cd1b06e10218feaf6fef299f473ba706582eb3bd9d52203fdbd7ee68') From c969fffbf03fea7fefeb4923aa630d0cb4740995 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:35:22 +0100 Subject: [PATCH 151/238] Add extra version of py-pillow (#15060) --- var/spack/repos/builtin/packages/py-pillow/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index 36d99f2c017..3934b4d4bb4 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -22,6 +22,7 @@ class PyPillow(PythonPackage): version('6.2.2', sha256='db9ff0c251ed066d367f53b64827cc9e18ccea001b986d08c265e53625dab950') version('6.2.1', sha256='bf4e972a88f8841d8fdc6db1a75e0f8d763e66e3754b03006cbc3854d89f1cb1') version('6.2.0', sha256='4548236844327a718ce3bb182ab32a16fa2050c61e334e959f554cac052fb0df') + version('6.0.0', sha256='809c0a2ce9032cbcd7b5313f71af4bdc5c8c771cb86eb7559afd954cab82ebb5') version('5.4.1', sha256='5233664eadfa342c639b9b9977190d64ad7aca4edc51a966394d7e08e7f38a9f') version('5.1.0', sha256='cee9bc75bff455d317b6947081df0824a8f118de2786dc3d74a3503fd631f4ef') version('3.2.0', sha256='64b0a057210c480aea99406c9391180cd866fc0fd8f0b53367e3af21b195784a') From f4d91cc3ec0bdd94c0a8bc59581ad98f63e69b2d Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 20:37:36 +0100 Subject: [PATCH 152/238] Add extra version of py-pickleshare (#15059) * Add extra version of py-pickleshare * Fix dependencies * Flake-8 --- var/spack/repos/builtin/packages/py-pickleshare/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-pickleshare/package.py b/var/spack/repos/builtin/packages/py-pickleshare/package.py index f48b5cc2000..3e1b7b6f01b 100644 --- a/var/spack/repos/builtin/packages/py-pickleshare/package.py +++ b/var/spack/repos/builtin/packages/py-pickleshare/package.py @@ -12,6 +12,9 @@ class PyPickleshare(PythonPackage): homepage = "https://pypi.python.org/pypi/pickleshare" url = "https://pypi.io/packages/source/p/pickleshare/pickleshare-0.7.4.tar.gz" + version('0.7.5', sha256='87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca') version('0.7.4', sha256='84a9257227dfdd6fe1b4be1319096c20eb85ff1e82c7932f36efccfe1b09737b') - depends_on('py-setuptools', type='build') + depends_on('python@2.7:2.8,3:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-pathlib2', type=('build', 'run'), when='^python@2.6:2.8,3.2:3.3') From d1cbc140220281efe3fce306628487a3a9188ad3 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 21:50:30 +0100 Subject: [PATCH 153/238] Add extra version of py-prompt-toolkit (#15062) --- .../repos/builtin/packages/py-prompt-toolkit/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py b/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py index 90a1b720984..de94c33f96a 100644 --- a/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py +++ b/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py @@ -12,8 +12,9 @@ class PyPromptToolkit(PythonPackage): homepage = "https://pypi.python.org/pypi/prompt_toolkit" url = "https://pypi.io/packages/source/p/prompt_toolkit/prompt_toolkit-1.0.9.tar.gz" - version('2.0.9', sha256='2519ad1d8038fd5fc8e770362237ad0364d16a7650fb5724af6997ed5515e3c1') - version('1.0.9', sha256='cd6523b36adc174cc10d54b1193eb626b4268609ff6ea92c15bcf1996609599c') + version('2.0.9', sha256='2519ad1d8038fd5fc8e770362237ad0364d16a7650fb5724af6997ed5515e3c1') + version('1.0.16', sha256='c1cedd626e08b8ee830ee65897de754113ff3f3035880030c08b01674d85c5b4') + version('1.0.9', sha256='cd6523b36adc174cc10d54b1193eb626b4268609ff6ea92c15bcf1996609599c') depends_on('py-setuptools', type='build') depends_on('py-six@1.9.0:', type=('build', 'run')) From 8825335056c0c69f3ba2508b65b4d09c173da5e7 Mon Sep 17 00:00:00 2001 From: iarspider Date: Wed, 19 Feb 2020 21:51:25 +0100 Subject: [PATCH 154/238] Add extra version of py-scikit-learn (#15087) --- var/spack/repos/builtin/packages/py-scikit-learn/package.py | 1 + 1 file changed, 1 insertion(+) 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 d5b47d785b9..4c717e20eef 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -38,6 +38,7 @@ class PyScikitLearn(PythonPackage): version('0.21.3', sha256='eb9b8ebf59eddd8b96366428238ab27d05a19e89c5516ce294abc35cea75d003') version('0.21.2', sha256='0aafc312a55ebf58073151b9308761a5fcfa45b7f7730cea4b1f066f824c72db') version('0.21.1', sha256='228d0611e69e5250946f8cd7bbefec75347950f0ca426d0c518db8f06583f660') + version('0.20.3', sha256='c503802a81de18b8b4d40d069f5e363795ee44b1605f38bc104160ca3bfe2c41') version('0.20.2', sha256='bc5bc7c7ee2572a1edcb51698a6caf11fae554194aaab9a38105d9ec419f29e6') version('0.20.0', sha256='97d1d971f8ec257011e64b7d655df68081dd3097322690afa1a71a1d755f8c18') version('0.19.1', sha256='5ca0ad32ee04abe0d4ba02c8d89d501b4e5e0304bdf4d45c2e9875a735b323a0') From 65133daad76dd2a000d18843306dec1f9c0d2265 Mon Sep 17 00:00:00 2001 From: Oliver Breitwieser Date: Thu, 20 Feb 2020 00:30:17 +0100 Subject: [PATCH 155/238] Fix relocate.mime_type if slashes in subtype (#11788) If the mimetype returned from `file -h -b --mime-type` contains slashes in its subtype, the tuple returned from `spack.relocate.mime_type` will have a size larger than two, which leads to errors. Change-Id: I31de477e69f114ffdc9ae122d00c573f5f749dbb --- lib/spack/spack/relocate.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py index 6847127efba..fb4ff18fae4 100644 --- a/lib/spack/spack/relocate.py +++ b/lib/spack/spack/relocate.py @@ -749,4 +749,5 @@ def mime_type(file): tty.debug('[MIME_TYPE] {0} -> {1}'.format(file, output.strip())) if '/' not in output: output += '/' - return tuple(output.strip().split('/')) + split_by_slash = output.strip().split('/') + return (split_by_slash[0], "/".join(split_by_slash[1:])) From 4cd1a5660ec35e64c8555c50cea61eec9210295c Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Wed, 19 Feb 2020 18:41:27 -0600 Subject: [PATCH 156/238] py-notebook: make py-setuptools a run dependency (#15095) * py-notebook: make py-setuptools a run dependency The py-setuptools dependency in py-notebook needs to be a run dependency. The following message is received if it is not in the run environment. Traceback (most recent call last): File "/opt/ssoft/apps/2020.1/linu x-centos7-sandybridge/gcc-9.2.0/py-notebook-6.0.1-6usbn4c/bin/jupyter-notebook", line 6, in from pkg_resources import load_entry_point Module NotFoundError: No module named 'pkg_resources' * Remove extraneous whitespace --- var/spack/repos/builtin/packages/py-notebook/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-notebook/package.py b/var/spack/repos/builtin/packages/py-notebook/package.py index d02c39f1e24..f674638a60e 100644 --- a/var/spack/repos/builtin/packages/py-notebook/package.py +++ b/var/spack/repos/builtin/packages/py-notebook/package.py @@ -25,7 +25,7 @@ class PyNotebook(PythonPackage): depends_on('python@2.7:2.8,3.3:', type=('build', 'run')) depends_on('python@3.5:', type=('build', 'run'), when='@6:') - depends_on('py-setuptools', type='build', when='@5:') + depends_on('py-setuptools', type=('build', 'run'), when='@5:') depends_on('py-jinja2', type=('build', 'run')) depends_on('py-tornado@4.0:6.999', type=('build', 'run'), when='@:5.7.4') depends_on('py-tornado@4.1:6.999', type=('build', 'run'), when='@5.7.5:6.0.1') From 9b221d26b8e915853b9b450e3e87c0017f2e1d36 Mon Sep 17 00:00:00 2001 From: "Mark W. Krentel" Date: Wed, 19 Feb 2020 18:42:51 -0600 Subject: [PATCH 157/238] hpctoolkit: adjust libunwind dependency (#15099) Change hpctoolkit's dependency on libunwind from 2018.10.12 to 1.4:. In libunwind, 2018.10.12 is going away in favor of 1.4-rc1 (they're nearly identical commits). Remove the 'gpu' version. This was a temporary branch that is now folded into master. --- var/spack/repos/builtin/packages/hpctoolkit/package.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index 2347e3bb6a1..fef2ec7b3e8 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -19,7 +19,6 @@ class Hpctoolkit(AutotoolsPackage): maintainers = ['mwkrentel'] version('master', branch='master') - version('gpu', branch='gpu') version('2019.12.28', commit='b4e1877ff96069fd8ed0fdf0e36283a5b4b62240') version('2019.08.14', commit='6ea44ed3f93ede2d0a48937f288a2d41188a277c') version('2018.12.28', commit='8dbf0d543171ffa9885344f32f23cc6f7f6e39bc') @@ -53,7 +52,7 @@ class Hpctoolkit(AutotoolsPackage): 'for the compute nodes.') variant('cuda', default=False, - description='Support CUDA on NVIDIA GPUs (master or gpu branch).') + description='Support CUDA on NVIDIA GPUs (master branch).') boost_libs = ( '+atomic +chrono +date_time +filesystem +system +thread +timer' @@ -69,7 +68,7 @@ class Hpctoolkit(AutotoolsPackage): depends_on('libdwarf') depends_on('libmonitor+hpctoolkit') depends_on('libmonitor+bgq', when='+bgq') - depends_on('libunwind@2018.10.0:') + depends_on('libunwind@1.4:') depends_on('mbedtls+pic') depends_on('xerces-c transcoder=iconv') depends_on('xz', type='link') @@ -84,14 +83,11 @@ class Hpctoolkit(AutotoolsPackage): conflicts('%gcc@:4.7.99', when='^dyninst@10.0.0:', msg='hpctoolkit requires gnu gcc 4.8.x or later') - conflicts('%gcc@:4.99.99', when='@gpu', - msg='the gpu branch requires gnu gcc 5.x or later') - conflicts('%gcc@:4.99.99', when='@master', msg='the master branch requires gnu gcc 5.x or later') conflicts('+cuda', when='@2018.0.0:2019.99.99', - msg='cuda is only available on the master or gpu branches') + msg='cuda is only available on the master branch') flag_handler = AutotoolsPackage.build_system_flags From 7a60a04402d14abce30f18ceda19e38d3d1964b0 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 19 Feb 2020 22:48:56 -0600 Subject: [PATCH 158/238] Docs: configure_args -> cmake_args (#15102) --- lib/spack/docs/packaging_guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 6e1271b12c6..41d74fcc74e 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -4454,7 +4454,7 @@ translate variant flags into CMake definitions. For example: .. code-block:: python - def configure_args(self): + def cmake_args(self): spec = self.spec return [ '-DUSE_EVERYTRACE=%s' % ('YES' if '+everytrace' in spec else 'NO'), From e258326133fdf362f3d483a59fffcf2cc02d3fab Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 05:54:07 +0100 Subject: [PATCH 159/238] Add extra version of py-scandir (#15085) --- var/spack/repos/builtin/packages/py-scandir/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-scandir/package.py b/var/spack/repos/builtin/packages/py-scandir/package.py index d370328b6e6..a32b03a06ea 100644 --- a/var/spack/repos/builtin/packages/py-scandir/package.py +++ b/var/spack/repos/builtin/packages/py-scandir/package.py @@ -14,7 +14,8 @@ class PyScandir(PythonPackage): import_modules = ['scandir'] - version('1.9.0', sha256='44975e209c4827fc18a3486f257154d34ec6eaec0f90fef0cca1caa482db7064') - version('1.6', sha256='e0278a2d4bc6c0569aedbe66bf26c8ab5b2b08378b3289de49257f23ac624338') + version('1.10.0', sha256='4d4631f6062e658e9007ab3149a9b914f3548cb38bfb021c64f39a025ce578ae') + version('1.9.0', sha256='44975e209c4827fc18a3486f257154d34ec6eaec0f90fef0cca1caa482db7064') + version('1.6', sha256='e0278a2d4bc6c0569aedbe66bf26c8ab5b2b08378b3289de49257f23ac624338') depends_on('py-setuptools', type=('build')) From d9d863330b76bbdb32efb4329add95bdb4e4d3d1 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 05:55:12 +0100 Subject: [PATCH 160/238] Add extra version of py-rsa (#15084) --- var/spack/repos/builtin/packages/py-rsa/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-rsa/package.py b/var/spack/repos/builtin/packages/py-rsa/package.py index b3d9cb7a375..85e2b84d00c 100644 --- a/var/spack/repos/builtin/packages/py-rsa/package.py +++ b/var/spack/repos/builtin/packages/py-rsa/package.py @@ -14,6 +14,7 @@ class PyRsa(PythonPackage): import_modules = ['rsa'] + version('4.0', sha256='1a836406405730121ae9823e19c6e806c62bbad73f890574fff50efa4122c487') version('3.4.2', sha256='25df4e10c263fb88b5ace923dd84bf9aa7f5019687b5e55382ffcdb8bede9db5') depends_on('py-setuptools', type=('build', 'run')) From 47e8084fab53ede23c0fddb05aff14cec0ed002c Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 05:56:10 +0100 Subject: [PATCH 161/238] Add extra version of py-python-gitlab (#15074) * Add extra version of py-python-gitlab * Update dependency version --- .../repos/builtin/packages/py-python-gitlab/package.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-python-gitlab/package.py b/var/spack/repos/builtin/packages/py-python-gitlab/package.py index e89b6e06d1f..e21c10b24d9 100644 --- a/var/spack/repos/builtin/packages/py-python-gitlab/package.py +++ b/var/spack/repos/builtin/packages/py-python-gitlab/package.py @@ -12,11 +12,13 @@ class PyPythonGitlab(PythonPackage): homepage = "https://github.com/gpocentek/python-gitlab" url = "https://pypi.io/packages/source/p/python-gitlab/python-gitlab-0.19.tar.gz" - version('0.19', sha256='88b65591db7a10a0d9979797e4e654a113e2b93b3a559309f6092b27ab93934a') - version('0.18', sha256='d60d67c82fedd8c3e4f0bb8b5241bf2df32307c98fdf2f02a94850e21db2d804') - version('0.17', sha256='f79337cd8b2343195b7ac0909e0483624d4235cca78fc76196a0ee4e109c9a70') - version('0.16', sha256='2c50dc0bd3ed7c6b1edb6e556b0f0109493ae9dfa46e3bffcf3e5e67228d7d53') + version('1.8.0', sha256='a6b03bc53f6e2e22b88d5ff9772b1bb360570ec82752f1def3d6eb60cda093e7') + version('0.19', sha256='88b65591db7a10a0d9979797e4e654a113e2b93b3a559309f6092b27ab93934a') + version('0.18', sha256='d60d67c82fedd8c3e4f0bb8b5241bf2df32307c98fdf2f02a94850e21db2d804') + version('0.17', sha256='f79337cd8b2343195b7ac0909e0483624d4235cca78fc76196a0ee4e109c9a70') + version('0.16', sha256='2c50dc0bd3ed7c6b1edb6e556b0f0109493ae9dfa46e3bffcf3e5e67228d7d53') depends_on('py-setuptools', type='build') depends_on('py-six', type=('build', 'run')) depends_on('py-requests@1.0:', type=('build', 'run')) + depends_on('py-requests@2.4.2:', type=('build', 'run'), when='@1.4.0:') From 66c3f89b7859e9acd6811e2271f6b5e34099517d Mon Sep 17 00:00:00 2001 From: "Dr. Christian Tacke" <58549698+ChristianTackeGSI@users.noreply.github.com> Date: Thu, 20 Feb 2020 05:59:16 +0100 Subject: [PATCH 162/238] libfabric: Always install fabtests (#15081) libfabric used to install fabtests only when installed using --test. fabtests has tools that are useful on a running system, so they should be installed always. * Rewrote the build/install part to always install fabtests alongside libfabric. * Updated a few fabtests resources. * Updated the test related stuff. Works for most versions now. * Include tcp and udp fabrics so that the test suite works. --- .../builtin/packages/libfabric/package.py | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/libfabric/package.py b/var/spack/repos/builtin/packages/libfabric/package.py index da5edc48f48..030b4b07887 100644 --- a/var/spack/repos/builtin/packages/libfabric/package.py +++ b/var/spack/repos/builtin/packages/libfabric/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os.path from spack import * @@ -47,7 +48,7 @@ class Libfabric(AutotoolsPackage): 'shm') variant('fabrics', - default='sockets', + default='sockets,tcp,udp', description='A list of enabled fabrics', values=fabrics, multi=True) @@ -79,6 +80,10 @@ class Libfabric(AutotoolsPackage): url='https://github.com/ofiwg/libfabric/releases/download/v1.9.0/fabtests-1.9.0.tar.bz2', sha256='60cc21db7092334904cbdafd142b2403572976018a22218e7c453195caef366e', placement='fabtests', when='@1.9.0') + resource(name='fabtests', + url='https://github.com/ofiwg/libfabric/releases/download/v1.8.0/fabtests-1.8.0.tar.gz', + sha256='4b9af18c9c7c8b28eaeac4e6e9148bd2ea7dc6b6f00f8e31c90a6fc536c5bb6c', + placement='fabtests', when='@1.8.0') resource(name='fabtests', url='https://github.com/ofiwg/libfabric/releases/download/v1.7.0/fabtests-1.7.0.tar.gz', sha256='ebb4129dc69dc0e1f48310ce1abb96673d8ddb18166bc595312ebcb96e803de9', @@ -102,7 +107,7 @@ class Libfabric(AutotoolsPackage): resource(name='fabtests', url='https://github.com/ofiwg/fabtests/releases/download/v1.4.2/fabtests-1.4.2.tar.gz', sha256='3b78d0ca1b223ff21b7f5b3627e67e358e3c18b700f86b017e2233fee7e88c2e', - placement='fabtests', when='@1.5.0') + placement='fabtests', when='@1.4.2') def setup_build_environment(self, env): if self.run_tests: @@ -133,15 +138,29 @@ def configure_args(self): return args - def installcheck(self): - fi_info = Executable(self.prefix.bin.fi_info) - fi_info() + def install(self, spec, prefix): + # Call main install method + super(Libfabric, self).install(spec, prefix) - # Build and run more extensive tests + # Build and install fabtests, if available + if not os.path.isdir('fabtests'): + return with working_dir('fabtests'): configure = Executable('./configure') configure('--prefix={0}'.format(self.prefix), '--with-libfabric={0}'.format(self.prefix)) make() make('install') + + def installcheck(self): + fi_info = Executable(self.prefix.bin.fi_info) + fi_info() + + # Run fabtests test suite if available + if not os.path.isdir('fabtests'): + return + if self.spec.satisfies('@1.8.0,1.9.0'): + # make test seems broken. + return + with working_dir('fabtests'): make('test') From 0be09abd9c9590f813a2a99bed4ca4b2ff4f31e6 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 06:04:11 +0100 Subject: [PATCH 163/238] Add extra version of py-pylint (#15068) * Add extra version of py-pylint * Update dependencies --- .../repos/builtin/packages/py-pylint/package.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pylint/package.py b/var/spack/repos/builtin/packages/py-pylint/package.py index 37ac8706574..02d8b8223fd 100644 --- a/var/spack/repos/builtin/packages/py-pylint/package.py +++ b/var/spack/repos/builtin/packages/py-pylint/package.py @@ -13,6 +13,7 @@ class PyPylint(PythonPackage): url = "https://pypi.io/packages/source/p/pylint/pylint-1.6.5.tar.gz" version('2.3.0', sha256='ee80c7af4f127b2a480d83010c9f0e97beb8eaa652b78c2837d3ed30b12e1182') + version('1.9.4', sha256='ee1e85575587c5b58ddafa25e1c1b01691ef172e139fc25585e5d3f02451da93') # version('1.7.2', sha256='ea6afb93a9ed810cf52ff3838eb3a15e2bf6a81b80de0eaede1ce442caa5ca69') # see dependencies version('1.6.5', sha256='a673984a8dd78e4a8b8cfdee5359a1309d833cf38405008f4a249994a8456719') version('1.4.3', sha256='1dce8c143a5aa15e0638887c2b395e2e823223c63ebaf8d5f432a99e44b29f60') @@ -22,12 +23,13 @@ class PyPylint(PythonPackage): depends_on('py-astroid', type=('build', 'run')) # note there is no working version of astroid for this depends_on('py-astroid@1.5.1:', type=('build', 'run'), when='@1.7:') + depends_on('py-astroid@1.6:1.9', type=('build', 'run'), when='@1.9.4:') depends_on('py-six', type=('build', 'run')) - depends_on('py-isort@4.2.5:') - depends_on('py-mccabe') - depends_on('py-editdistance') + depends_on('py-isort@4.2.5:', type=('build', 'run')) + depends_on('py-mccabe', type=('build', 'run')) + depends_on('py-editdistance', type=('build', 'run'), when='@:1.7') depends_on('py-setuptools@17.1:', type='build') # depends_on('py-setuptools-scm@1.15.0:', type='build') - depends_on('py-configparser', when='^python@:2.8') - depends_on('py-backports-functools-lru-cache', when='^python@:2.8') - depends_on('py-singledispatch', when='^python@:3.3.99') + depends_on('py-configparser', when='^python@:2.8', type=('build', 'run')) + depends_on('py-backports-functools-lru-cache', when='^python@:2.8', type=('build', 'run')) + depends_on('py-singledispatch', when='^python@:3.3.99', type=('build', 'run')) From ef9ab2ebc44e11516e36f547aa837f407f7936e9 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 06:08:30 +0100 Subject: [PATCH 164/238] Add extra version of py-ptyprocess (#15064) --- var/spack/repos/builtin/packages/py-ptyprocess/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-ptyprocess/package.py b/var/spack/repos/builtin/packages/py-ptyprocess/package.py index d95e1f71077..2e8c3cd5c64 100644 --- a/var/spack/repos/builtin/packages/py-ptyprocess/package.py +++ b/var/spack/repos/builtin/packages/py-ptyprocess/package.py @@ -12,4 +12,5 @@ class PyPtyprocess(PythonPackage): homepage = "https://pypi.python.org/pypi/ptyprocess" url = "https://pypi.io/packages/source/p/ptyprocess/ptyprocess-0.5.1.tar.gz" + version('0.6.0', sha256='923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0') version('0.5.1', sha256='0530ce63a9295bfae7bd06edc02b6aa935619f486f0f1dc0972f516265ee81a6') From a47ab9c6b216e4926a5cc4564a7db24379354fb4 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 06:09:07 +0100 Subject: [PATCH 165/238] Add extra version of py-psutil (#15063) * Add extra version of py-psutil * Add optional dependency on enum34 * Update package.py * Remove unused enum variant --- var/spack/repos/builtin/packages/py-psutil/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-psutil/package.py b/var/spack/repos/builtin/packages/py-psutil/package.py index be282f141f1..5ccd2f6ce78 100644 --- a/var/spack/repos/builtin/packages/py-psutil/package.py +++ b/var/spack/repos/builtin/packages/py-psutil/package.py @@ -15,6 +15,7 @@ class PyPsutil(PythonPackage): url = "https://pypi.io/packages/source/p/psutil/psutil-5.6.3.tar.gz" version('5.6.3', sha256='863a85c1c0a5103a12c05a35e59d336e1d665747e531256e061213e2e90f63f3') + version('5.6.2', sha256='828e1c3ca6756c54ac00f1427fdac8b12e21b8a068c3bb9b631a1734cada25ed') version('5.5.1', sha256='72cebfaa422b7978a1d3632b65ff734a34c6b34f4578b68a5c204d633756b810') version('5.4.5', sha256='ebe293be36bb24b95cdefc5131635496e88b17fabbcf1e4bc9b5c01f5e489cfe') version('5.0.1', sha256='9d8b7f8353a2b2eb6eb7271d42ec99d0d264a9338a37be46424d56b4e473b39e') From 22a56a89c7814b3e7386fa01528a58fe91ea3a4f Mon Sep 17 00:00:00 2001 From: "Dr. Christian Tacke" <58549698+ChristianTackeGSI@users.noreply.github.com> Date: Thu, 20 Feb 2020 06:09:26 +0100 Subject: [PATCH 166/238] Use shutil.copy2 in install_tree (#15058) Sometimes one needs to preserve the (relative order) of mtimes on installed files. So it's better to just copy over all the metadata from the source tree to the install tree. If permissions need fixing, that will be done anyway afterwards. One major use case are resource()s: They're unpacked in one place and then copied to their final place using install_tree(). If the resource is a source tree using autoconf/automake, resetting mtimes uncorrectly might force unwanted autoconf/etc calls. --- lib/spack/llnl/util/filesystem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 273840a424f..b4bb23d4449 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -456,7 +456,7 @@ def copy_tree(src, dest, symlinks=True, ignore=None, _permissions=False): if os.path.isdir(s): mkdirp(d) else: - shutil.copyfile(s, d) + shutil.copy2(s, d) if _permissions: set_install_permissions(d) From a02aadb4db467ade9d9a6bf1534b5695ecf8990f Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 06:09:45 +0100 Subject: [PATCH 167/238] Add extra version of py-packaging (#15047) * Add extra version of py-packaging * Update py-packaging `attrs` dependency was only in 19.1 --- var/spack/repos/builtin/packages/py-packaging/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-packaging/package.py b/var/spack/repos/builtin/packages/py-packaging/package.py index 466d3f787f5..30b44d95228 100644 --- a/var/spack/repos/builtin/packages/py-packaging/package.py +++ b/var/spack/repos/builtin/packages/py-packaging/package.py @@ -16,11 +16,12 @@ class PyPackaging(PythonPackage): version('19.2', sha256='28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47') version('19.1', sha256='c491ca87294da7cc01902edbe30a5bc6c4c28172b5138ab4e4aa1b9d7bfaeafe') + version('19.0', sha256='0c98a5d0be38ed775798ece1b9727178c4469d9c3b4ada66e8e6b7849f8732af') version('17.1', sha256='f019b770dd64e585a99714f1fd5e01c7a8f11b45635aa953fd41c689a657375b') version('16.8', sha256='5d50835fdf0a7edf0b55e311b7c887786504efea1177abd7e69329a8e5ea619e') depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) - depends_on('py-attrs', when='@:19.1', type=('build', 'run')) + depends_on('py-attrs', when='@19.1', type=('build', 'run')) depends_on('py-pyparsing@2.0.2:', type=('build', 'run')) depends_on('py-six', type=('build', 'run')) From 4d62dda17ae9cbbb025a4a7b5536c47bc18a0aa4 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 06:11:49 +0100 Subject: [PATCH 168/238] Add extra version of py-multiprocess (#15043) * Add extra version of py-multiprocess * Update dependency version * Add url_for_version * Flake-8 * Update package.py --- .../builtin/packages/py-multiprocess/package.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-multiprocess/package.py b/var/spack/repos/builtin/packages/py-multiprocess/package.py index beaa083061b..97a58a905d9 100644 --- a/var/spack/repos/builtin/packages/py-multiprocess/package.py +++ b/var/spack/repos/builtin/packages/py-multiprocess/package.py @@ -12,6 +12,7 @@ class PyMultiprocess(PythonPackage): homepage = "https://github.com/uqfoundation/multiprocess" url = "https://pypi.io/packages/source/m/multiprocess/multiprocess-0.70.5.zip" + version('0.70.7', sha256='3394f1fbd0d87112690a877e49eb7917d851ee8d822294d522dd4deae12febdb') version('0.70.5', sha256='c4c196f3c4561dc1d78139c3e73709906a222d2fc166ef3eef895d8623df7267') version('0.70.4', sha256='a692c6dc8392c25b29391abb58a9fbdc1ac38bca73c6f27d787774201e68e12c') @@ -19,3 +20,14 @@ class PyMultiprocess(PythonPackage): depends_on('py-setuptools@0.6:', type='build') depends_on('py-dill@0.2.6:', type=('build', 'run')) + depends_on('py-dill@0.2.9:', type=('build', 'run'), when='@0.70.7:') + + def url_for_version(self, version): + url = self.url.rsplit('/', 1)[0] + if version >= Version('0.70.7'): + url += '/multiprocess-{0}.tar.gz' + else: + url += '/multiprocess-{0}.zip' + + url = url.format(version) + return url From d98b98aae67246331c1ae0078351c53be41ce8b3 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 20 Feb 2020 16:50:21 +0100 Subject: [PATCH 169/238] Package for IRPF90 (#15076) * Added IRPF90 package * PEP8 * SHA256 * Update var/spack/repos/builtin/packages/py-irpf90/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- .../builtin/packages/py-irpf90/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-irpf90/package.py diff --git a/var/spack/repos/builtin/packages/py-irpf90/package.py b/var/spack/repos/builtin/packages/py-irpf90/package.py new file mode 100644 index 00000000000..ffab3356993 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-irpf90/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 PyIrpf90(PythonPackage): + """IRPF90 is a Fortran90 preprocessor written in Python for programming + using the Implicit Reference to Parameters (IRP) method. It simplifies the + development of large fortran codes in the field of scientific high + performance computing.""" + + homepage = "http://irpf90.ups-tlse.fr" + url = "https://pypi.io/packages/source/i/irpf90/irpf90-1.7.7.tar.gz" + + maintainers = ['scemama'] + + version('1.7.7', sha256='c6b2eecb9180f1feaab9644bbed806637a4a30a0fad2c4775a985fcc01a99530') + + depends_on('python@2.7.0:2.8.999', type=('build', 'run')) + depends_on('py-setuptools', type='build') From 9a5fa90c25daf51f9441a992c4343087053c486e Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 16:52:23 +0100 Subject: [PATCH 170/238] Add extra version of py-pyshp (#15072) * Add extra version of py-pyshp * Update package.py --- var/spack/repos/builtin/packages/py-pyshp/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-pyshp/package.py b/var/spack/repos/builtin/packages/py-pyshp/package.py index c4374c8f0ee..1c0ff61d213 100644 --- a/var/spack/repos/builtin/packages/py-pyshp/package.py +++ b/var/spack/repos/builtin/packages/py-pyshp/package.py @@ -13,6 +13,8 @@ class PyPyshp(PythonPackage): homepage = "https://github.com/GeospatialPython/pyshp" url = "https://pypi.io/packages/source/p/pyshp/pyshp-1.2.12.tar.gz" + version('2.1.0', sha256='e65c7f24d372b97d0920b864bbeb78322bb37b83f2606e2a2212631d5d51e5c0') version('1.2.12', sha256='8dcd65e0aa2aa2951527ddb7339ea6e69023543d8a20a73fc51e2829b9ed6179') depends_on('py-setuptools', type='build') + depends_on('python@2.7:', type=('build', 'run')) From 4e2a5388ac5dcd7a09cc4858b2f0b6ef9a0a5a1b Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 16:53:04 +0100 Subject: [PATCH 171/238] Add extra version of py-qtconsole (#15083) * Add extra version of py-qtconsole * Update package.py * Update package.py --- var/spack/repos/builtin/packages/py-qtconsole/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-qtconsole/package.py b/var/spack/repos/builtin/packages/py-qtconsole/package.py index 434766f72a0..9fd8475662f 100644 --- a/var/spack/repos/builtin/packages/py-qtconsole/package.py +++ b/var/spack/repos/builtin/packages/py-qtconsole/package.py @@ -12,15 +12,18 @@ class PyQtconsole(PythonPackage): homepage = "http://ipython.org" url = "https://pypi.io/packages/source/q/qtconsole/qtconsole-4.2.1.tar.gz" + version('4.5.1', sha256='4af84facdd6f00a6b9b2927255f717bb23ae4b7a20ba1d9ef0a5a5a8dbe01ae2') version('4.2.1', sha256='25ec7d345528b3e8f3c91be349dd3c699755f206dc4b6ec668e2e5dd60ea18ef') variant('doc', default=False, description='Build documentation') + depends_on('python@2.7:2.8,3.3:', type=('build', 'run')) depends_on('py-ipykernel@4.1:', type=('build', 'run')) depends_on('py-jupyter-client@4.1:', type=('build', 'run')) depends_on('py-jupyter-core', type=('build', 'run')) depends_on('py-pygments', type=('build', 'run')) depends_on('py-traitlets', type=('build', 'run')) + depends_on('py-ipython-genutils', type=('build', 'run'), when='@4.5.1:') depends_on('py-sphinx@1.3:', type=('build', 'run'), when='+docs') depends_on('py-mock', type='test', when='^python@2.7:2.8') From 64887e4821cf30185455de645c7cde845c43ad00 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 16:53:38 +0100 Subject: [PATCH 172/238] Add extra version of py-sip (#15108) --- var/spack/repos/builtin/packages/py-sip/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-sip/package.py b/var/spack/repos/builtin/packages/py-sip/package.py index 4b625d8f3fc..09c6b743b14 100644 --- a/var/spack/repos/builtin/packages/py-sip/package.py +++ b/var/spack/repos/builtin/packages/py-sip/package.py @@ -17,6 +17,7 @@ class PySip(Package): version('develop', hg=hg) # wasn't actually able to clone this version('4.19.18', sha256='c0bd863800ed9b15dcad477c4017cdb73fa805c25908b0240564add74d697e1e') + version('4.19.15', sha256='2b5c0b2c0266b467b365c21376d50dde61a3236722ab87ff1e8dacec283eb610') version('4.19.13', sha256='e353a7056599bf5fbd5d3ff9842a6ab2ea3cf4e0304a0f925ec5862907c0d15e') variant('module', default='sip', description='Name of private SIP module', From 98895297b55fa11d3505af6db30421ec215a061e Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 16:55:15 +0100 Subject: [PATCH 173/238] Add extra version of py-py4j (#15065) * Add extra version of py-py4j * Add test dependencies * Update package.py --- var/spack/repos/builtin/packages/py-py4j/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-py4j/package.py b/var/spack/repos/builtin/packages/py-py4j/package.py index db51d6eb90e..e67f5a3ec73 100644 --- a/var/spack/repos/builtin/packages/py-py4j/package.py +++ b/var/spack/repos/builtin/packages/py-py4j/package.py @@ -13,8 +13,10 @@ class PyPy4j(PythonPackage): homepage = "https://www.py4j.org/" url = "https://pypi.io/packages/source/p/py4j/py4j-0.10.4.zip" + version('0.10.7', sha256='721189616b3a7d28212dfb2e7c6a1dd5147b03105f1fc37ff2432acd0e863fa5') version('0.10.6', sha256='d3e7ac7c2171c290eba87e70aa5095b7eb6d6ad34789c007c88d550d9f575083') version('0.10.4', sha256='406fbfdbcbbb398739f61fafd25724670a405a668eb08c1721d832eadce06aae') version('0.10.3', sha256='f4570108ad014dd52a65c2288418e31cb8227b5ecc39ad7fc7fe98314f7a26f2') depends_on('py-setuptools', type='build') + depends_on('py-nose@1.3.7:', type='test') From 43f8e9a2605b3e5ea604b4e31bcbd1a1bc459987 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 16:55:39 +0100 Subject: [PATCH 174/238] Add extra version of prometheus-client (#15067) * Add extra version of py-prometheus-client * Update package.py * Update package.py --- .../repos/builtin/packages/py-prometheus-client/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-prometheus-client/package.py b/var/spack/repos/builtin/packages/py-prometheus-client/package.py index 92fb9665ab0..86733359cf2 100644 --- a/var/spack/repos/builtin/packages/py-prometheus-client/package.py +++ b/var/spack/repos/builtin/packages/py-prometheus-client/package.py @@ -13,6 +13,10 @@ class PyPrometheusClient(PythonPackage): url = "https://pypi.io/packages/source/p/prometheus_client/prometheus_client-0.7.1.tar.gz" version('0.7.1', sha256='71cd24a2b3eb335cb800c7159f423df1bd4dcd5171b234be15e3f31ec9f622da') + version('0.7.0', sha256='ee0c90350595e4a9f36591f291e6f9933246ea67d7cd7d1d6139a9781b14eaae') version('0.5.0', sha256='e8c11ff5ca53de6c3d91e1510500611cafd1d247a937ec6c588a0a7cc3bef93c') + variant('twisted', default=False, description='Expose metrics as a twisted resource') + depends_on('py-setuptools', type='build') + depends_on('py-twisted', type=('build', 'run'), when='+twisted') From 308a6bc601619937d4b2d80310eb71bc00c017ee Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 16:56:47 +0100 Subject: [PATCH 175/238] Add extra version of xerces-c (#15123) --- var/spack/repos/builtin/packages/xerces-c/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py index 26d21b342c6..05af3d1a5c9 100644 --- a/var/spack/repos/builtin/packages/xerces-c/package.py +++ b/var/spack/repos/builtin/packages/xerces-c/package.py @@ -20,6 +20,7 @@ class XercesC(AutotoolsPackage): version('3.2.2', sha256='1f2a4d1dbd0086ce0f52b718ac0fa4af3dc1ce7a7ff73a581a05fbe78a82bce0') version('3.2.1', sha256='a36b6e162913ec218cfb84772d2535d43c3365355a601d45d4b8ce11f0ece0da') version('3.1.4', sha256='9408f12c1628ecf80730bedbe8b2caad810edd01bb4c66f77b60c873e8cc6891') + version('3.1.3', sha256='fc5e5e0247b108b8d64d75aeb124cabdee9b7fcd725a89fe2242b4637b25c1fa') # Whilst still using Autotools, can use full cxxstd with 'default' # If build is moved to CMake, then will also need a patch to Xerces-C's From 674c4379ee88aaf810ce622e627ac51ca28b1125 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 16:57:07 +0100 Subject: [PATCH 176/238] Add extra version of xapian-core (#15122) --- var/spack/repos/builtin/packages/xapian-core/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/xapian-core/package.py b/var/spack/repos/builtin/packages/xapian-core/package.py index e8a917128ae..5e1bc5d244a 100644 --- a/var/spack/repos/builtin/packages/xapian-core/package.py +++ b/var/spack/repos/builtin/packages/xapian-core/package.py @@ -15,6 +15,7 @@ class XapianCore(AutotoolsPackage): homepage = "https://xapian.org" url = "http://oligarchy.co.uk/xapian/1.4.3/xapian-core-1.4.3.tar.xz" - version('1.4.3', sha256='7d5295511ca2de70463a29e75f6a2393df5dc1485bf33074b778c66e1721e475') + version('1.4.11', sha256='9f16b2f3e2351a24034d7636f73566ab74c3f0729e9e0492934e956b25c5bc07') + version('1.4.3', sha256='7d5295511ca2de70463a29e75f6a2393df5dc1485bf33074b778c66e1721e475') depends_on('zlib') From 186ca13cf0ca06eb458a84cbf0080a024d87d2b9 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 16:57:33 +0100 Subject: [PATCH 177/238] Add extra version of vecgeom (#15121) --- var/spack/repos/builtin/packages/vecgeom/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index ef2ae4b07bf..ed6e516c8aa 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -15,8 +15,9 @@ class Vecgeom(CMakePackage): homepage = "https://gitlab.cern.ch/VecGeom/VecGeom" url = "https://gitlab.cern.ch/api/v4/projects/VecGeom%2FVecGeom/repository/archive.tar.gz?sha=v0.3.rc" + version('01.01.03', git='https://gitlab.cern.ch/VecGeom/VecGeom.git', tag='v01.01.03', preferred=True) version('01.00.00', git='https://gitlab.cern.ch/VecGeom/VecGeom.git', tag='v01.00.00') - version('00.05.00', git='https://gitlab.cern.ch/VecGeom/VecGeom.git', tag='v00.05.00', preferred=True) + version('00.05.00', git='https://gitlab.cern.ch/VecGeom/VecGeom.git', tag='v00.05.00') version('0.3.rc', sha256='a87a9ea4ab126b59ff9c79182bc0911ead3d76dd197194742e2a35ccd341299d') variant('cxxstd', From 0ea7b83e71916bced9f0a31650e19dbedea9c02e Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 16:58:19 +0100 Subject: [PATCH 178/238] Add extra version of py-setuptools (#15106) --- var/spack/repos/builtin/packages/py-setuptools/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index ee47532b1e7..affd23eebdf 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -23,6 +23,7 @@ class PySetuptools(PythonPackage): version('41.4.0', sha256='7eae782ccf36b790c21bde7d86a4f303a441cd77036b25c559a602cf5186ce4d') version('41.0.1', sha256='a222d126f5471598053c9a77f4b5d4f26eaa1f150ad6e01dcf1a42e185d05613') + version('41.0.0', sha256='79d30254b6fe7a8e672e43cd85f13a9f3f2a50080bc81d851143e2219ef0dcb1') version('40.8.0', sha256='6e4eec90337e849ade7103723b9a99631c1f0d19990d6e8412dc42f5ae8b304d') version('40.4.3', sha256='acbc5740dd63f243f46c2b4b8e2c7fd92259c2ddb55a4115b16418a2ed371b15') version('40.2.0', sha256='47881d54ede4da9c15273bac65f9340f8929d4f0213193fa7894be384f2dcfa6') From 545c436d33c5a3d1dc2f70a1b8b1471c2cf4b5b0 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 17:55:37 +0100 Subject: [PATCH 179/238] Add extra version of xrootd (#15124) --- .../repos/builtin/packages/xrootd/package.py | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/xrootd/package.py b/var/spack/repos/builtin/packages/xrootd/package.py index 6b9bf1d14c0..6f0f9268c13 100644 --- a/var/spack/repos/builtin/packages/xrootd/package.py +++ b/var/spack/repos/builtin/packages/xrootd/package.py @@ -13,20 +13,21 @@ class Xrootd(CMakePackage): homepage = "http://xrootd.org" url = "http://xrootd.org/download/v4.6.0/xrootd-4.6.0.tar.gz" - version('4.8.5', sha256='42e4d2cc6f8b442135f09bcc12c7be38b1a0c623a005cb5e69ff3d27997bdf73') - version('4.8.4', sha256='f148d55b16525567c0f893edf9bb2975f7c09f87f0599463e19e1b456a9d95ba') - version('4.8.3', sha256='9cd30a343758b8f50aea4916fa7bd37de3c37c5b670fe059ae77a8b2bbabf299') - version('4.8.2', sha256='8f28ec53e799d4aa55bd0cc4ab278d9762e0e57ac40a4b02af7fc53dcd1bef39') - version('4.8.1', sha256='edee2673d941daf7a6e5c963d339d4a69b4db5c4b6f77b4548b3129b42198029') - version('4.8.0', sha256='0b59ada295341902ca01e9d23e29780fb8df99a6d2bd1c2d654e9bb70c877ad8') - version('4.7.1', sha256='90ddc7042f05667045b06e02c8d9c2064c55d9a26c02c50886254b8df85fc577') - version('4.7.0', sha256='6cc69d9a3694e8dcf2392e9c3b518bd2497a89b3a9f25ffaec62efa52170349b') - version('4.6.1', sha256='0261ce760e8788f85d68918d7702ae30ec677a8f331dae14adc979b4cc7badf5') - version('4.6.0', sha256='b50f7c64ed2a4aead987de3fdf6fce7ee082407ba9297b6851cd917db72edd1d') - version('4.5.0', sha256='27a8e4ef1e6bb6bfe076fef50afe474870edd198699d43359ef01de2f446c670') - version('4.4.1', sha256='3c295dbf750de086c04befc0d3c7045fd3976611c2e75987c1477baca37eb549') - version('4.4.0', sha256='f066e7488390c0bc50938d23f6582fb154466204209ca92681f0aa06340e77c8') - version('4.3.0', sha256='d34865772d975b5d58ad80bb05312bf49aaf124d5431e54dc8618c05a0870e3c') + version('4.10.0', sha256='f07f85e27d72e9e8ff124173c7b53619aed8fcd36f9d6234c33f8f7fd511995b') + version('4.8.5', sha256='42e4d2cc6f8b442135f09bcc12c7be38b1a0c623a005cb5e69ff3d27997bdf73') + version('4.8.4', sha256='f148d55b16525567c0f893edf9bb2975f7c09f87f0599463e19e1b456a9d95ba') + version('4.8.3', sha256='9cd30a343758b8f50aea4916fa7bd37de3c37c5b670fe059ae77a8b2bbabf299') + version('4.8.2', sha256='8f28ec53e799d4aa55bd0cc4ab278d9762e0e57ac40a4b02af7fc53dcd1bef39') + version('4.8.1', sha256='edee2673d941daf7a6e5c963d339d4a69b4db5c4b6f77b4548b3129b42198029') + version('4.8.0', sha256='0b59ada295341902ca01e9d23e29780fb8df99a6d2bd1c2d654e9bb70c877ad8') + version('4.7.1', sha256='90ddc7042f05667045b06e02c8d9c2064c55d9a26c02c50886254b8df85fc577') + version('4.7.0', sha256='6cc69d9a3694e8dcf2392e9c3b518bd2497a89b3a9f25ffaec62efa52170349b') + version('4.6.1', sha256='0261ce760e8788f85d68918d7702ae30ec677a8f331dae14adc979b4cc7badf5') + version('4.6.0', sha256='b50f7c64ed2a4aead987de3fdf6fce7ee082407ba9297b6851cd917db72edd1d') + version('4.5.0', sha256='27a8e4ef1e6bb6bfe076fef50afe474870edd198699d43359ef01de2f446c670') + version('4.4.1', sha256='3c295dbf750de086c04befc0d3c7045fd3976611c2e75987c1477baca37eb549') + version('4.4.0', sha256='f066e7488390c0bc50938d23f6582fb154466204209ca92681f0aa06340e77c8') + version('4.3.0', sha256='d34865772d975b5d58ad80bb05312bf49aaf124d5431e54dc8618c05a0870e3c') variant('http', default=True, description='Build with HTTP support') From d9b8a9a8b31ba87aa02273541a3930273d36c0cf Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 18:31:01 +0100 Subject: [PATCH 180/238] Add extra version of py-zipp (#15118) * Add extra version of py-zipp * Update package.py --- var/spack/repos/builtin/packages/py-zipp/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-zipp/package.py b/var/spack/repos/builtin/packages/py-zipp/package.py index 31b4d73fdd0..424062ee6e0 100644 --- a/var/spack/repos/builtin/packages/py-zipp/package.py +++ b/var/spack/repos/builtin/packages/py-zipp/package.py @@ -13,8 +13,9 @@ class PyZipp(PythonPackage): url = "https://pypi.io/packages/source/z/zipp/zipp-0.6.0.tar.gz" version('0.6.0', sha256='3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e') + version('0.5.1', sha256='ca943a7e809cc12257001ccfb99e3563da9af99d52f261725e96dfe0f9275bc3') depends_on('python@2.7:', type=('build', 'run')) depends_on('py-setuptools', type='build') depends_on('py-setuptools-scm@1.15.0:', type='build') - depends_on('py-more-itertools', type=('build', 'run')) + depends_on('py-more-itertools', type=('build', 'run'), when='@0.6.0:') From b538885b085fecf7dbcacb75a96738f7fe1c8c43 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 18:31:53 +0100 Subject: [PATCH 181/238] Add extra version of py-wrapt (#15117) --- var/spack/repos/builtin/packages/py-wrapt/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-wrapt/package.py b/var/spack/repos/builtin/packages/py-wrapt/package.py index c31fe666f41..bc2a4ae804b 100644 --- a/var/spack/repos/builtin/packages/py-wrapt/package.py +++ b/var/spack/repos/builtin/packages/py-wrapt/package.py @@ -13,4 +13,5 @@ class PyWrapt(PythonPackage): url = "https://pypi.io/packages/source/w/wrapt/wrapt-1.11.2.tar.gz" version('1.11.2', sha256='565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1') + version('1.11.1', sha256='4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533') version('1.10.10', sha256='42160c91b77f1bc64a955890038e02f2f72986c01d462d53cb6cb039b995cdd9') From 40410102d25e48c034cb5ef068f4ca5ab93243e9 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 18:35:28 +0100 Subject: [PATCH 182/238] Add extra version of py-werkzeug (#15115) --- var/spack/repos/builtin/packages/py-werkzeug/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-werkzeug/package.py b/var/spack/repos/builtin/packages/py-werkzeug/package.py index ca02ac51d64..876deeb4453 100644 --- a/var/spack/repos/builtin/packages/py-werkzeug/package.py +++ b/var/spack/repos/builtin/packages/py-werkzeug/package.py @@ -13,6 +13,7 @@ class PyWerkzeug(PythonPackage): url = "https://pypi.io/packages/source/W/Werkzeug/Werkzeug-0.16.0.tar.gz" version('0.16.0', sha256='7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7') + version('0.15.4', sha256='a0b915f0815982fb2a09161cb8f31708052d0951c3ba433ccc5e1aa276507ca6') version('0.11.15', sha256='455d7798ac263266dbd38d4841f7534dd35ca9c3da4a8df303f8488f38f3bcc0') version('0.11.11', sha256='e72c46bc14405cba7a26bd2ce28df734471bc9016bc8b4cb69466c2c14c2f7e5') From f5b5036ad55bf6e56cd5e1013d4eaacd6c56db7b Mon Sep 17 00:00:00 2001 From: snehring Date: Thu, 20 Feb 2020 11:45:57 -0600 Subject: [PATCH 183/238] adding package igv (#15096) * igv: adding package igv * removing some remaining initial boilerplate * changing path construction to be more correct * adding in type for java dep, also forgot about prefix.bin etc --- .../repos/builtin/packages/igv/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/igv/package.py diff --git a/var/spack/repos/builtin/packages/igv/package.py b/var/spack/repos/builtin/packages/igv/package.py new file mode 100644 index 00000000000..990b5e19623 --- /dev/null +++ b/var/spack/repos/builtin/packages/igv/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 Igv(Package): + """The Integrative Genomics Viewer (IGV) is a high-performance visualization + tool for interactive exploration of large, integrated genomic datasets. + It supports a wide variety of data types, including array-based and + next-generation sequence data, and genomic annotations.""" + + homepage = "https://software.broadinstitute.org/software/igv/home" + url = "https://data.broadinstitute.org/igv/projects/downloads/2.8/IGV_Linux_2.8.0.zip" + + maintainers = ['snehring'] + + version('2.8.0', sha256='897f683645b02c4da55424110b885071c2b9dd51bc180174e2a9b10788bf3257') + + # They ship with 11, out of an abundance of caution I'm going to restrict + # it to just 11. + + depends_on('java@11:11.99', type='run') + + def install(self, spec, prefix): + # Binary dist, just copy what we need, which should be the lib + # directory, the two script, and the arg file + install_tree('lib', prefix.lib) + mkdirp(prefix.bin) + filter_file('^prefix=.*$', 'prefix=' + prefix, + 'igv.sh', 'igv_hidpi.sh') + install('igv.sh', prefix.bin) + install('igv_hidpi.sh', prefix.bin) + install('igv.args', prefix) From a1e3a1653a5772f6b4d119b0778e662ea3177026 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Thu, 20 Feb 2020 13:00:48 -0500 Subject: [PATCH 184/238] Mark binutils-related conflicts (#15075) * Mark conflicts with binutils on darwin * Explicitly require binutils bootstrapping and mark conflict with nvptx * Disable gold variant by default on darwin --- .../builtin/packages/binutils/package.py | 7 +++++- .../repos/builtin/packages/gcc/package.py | 22 +++++++++++++------ .../repos/builtin/packages/llvm/package.py | 3 ++- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index ad5f7fb5ef9..d84dd32bc58 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -5,6 +5,7 @@ from spack import * import glob +import sys class Binutils(AutotoolsPackage, GNUMirrorPackage): @@ -28,7 +29,8 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage): variant('plugins', default=False, description="enable plugins, needed for gold linker") - variant('gold', default=True, description="build the gold linker") + variant('gold', default=(sys.platform != 'darwin'), + description="build the gold linker") variant('libiberty', default=False, description='Also install libiberty.') variant('nls', default=True, description='Enable Native Language Support') variant('headers', default=False, description='Install extra headers (e.g. ELF)') @@ -44,6 +46,9 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage): depends_on('m4', type='build', when='@:2.29.99 +gold') depends_on('bison', type='build', when='@:2.29.99 +gold') + conflicts('+gold', when='platform=darwin', + msg="Binutils cannot build linkers on macOS") + def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 2c38296f11f..431fcaa9da5 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -187,6 +187,11 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage): conflicts('languages=jit', when='+nvptx') conflicts('languages=objc', when='+nvptx') conflicts('languages=obj-c++', when='+nvptx') + # NVPTX build disables bootstrap + conflicts('+binutils', when='+nvptx') + + # Binutils can't build ld on macOS + conflicts('+binutils', when='platform=darwin') if sys.platform == 'darwin': # Fix parallel build on APFS filesystem @@ -298,17 +303,20 @@ def configure_args(self): # Binutils if spec.satisfies('+binutils'): - static_bootstrap_flags = '-static-libstdc++ -static-libgcc' + stage1_ldflags = str(self.rpath_args) + boot_ldflags = stage1_ldflags + ' -static-libstdc++ -static-libgcc' + if '%gcc' in spec: + stage1_ldflags = boot_ldflags + binutils = spec['binutils'].prefix.bin options.extend([ '--with-sysroot=/', - '--with-stage1-ldflags={0} {1}'.format( - self.rpath_args, static_bootstrap_flags), - '--with-boot-ldflags={0} {1}'.format( - self.rpath_args, static_bootstrap_flags), + '--with-stage1-ldflags=' + stage1_ldflags, + '--with-boot-ldflags=' + boot_ldflags, '--with-gnu-ld', - '--with-ld={0}/ld'.format(spec['binutils'].prefix.bin), + '--with-ld=' + binutils.ld, '--with-gnu-as', - '--with-as={0}/as'.format(spec['binutils'].prefix.bin), + '--with-as=' + binutils.join('as'), + '--enable-bootstrap', ]) # MPC diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 05e9404592c..871559d453b 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +import sys class Llvm(CMakePackage): @@ -71,7 +72,7 @@ class Llvm(CMakePackage): description="Build the LLVM C++ standard library") variant('compiler-rt', default=True, description="Build LLVM compiler runtime, including sanitizers") - variant('gold', default=True, + variant('gold', default=(sys.platform != 'darwin'), description="Add support for LTO with the gold linker plugin") variant('shared_libs', default=False, description="Build all components as shared libraries, faster, " From d1929b2ea7a3dd694ede128520cd07bd3183ad47 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 20 Feb 2020 21:20:12 +0100 Subject: [PATCH 185/238] Compilers require an exact match on version during concretization (#14752) Spack now requires an exact match of the compiler version requested by the user. A loose constraint can be given to Spack by using a version range instead of a concrete version (e.g. 4.5: instead of 4.5). --- lib/spack/spack/concretize.py | 15 +++++++++++++-- lib/spack/spack/test/concretize.py | 13 +++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 8814d03d06a..e460f456002 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -362,7 +362,16 @@ def concretize_compiler(self, spec): # compiler_for_spec Should think whether this can be more # efficient def _proper_compiler_style(cspec, aspec): - return spack.compilers.compilers_for_spec(cspec, arch_spec=aspec) + compilers = spack.compilers.compilers_for_spec( + cspec, arch_spec=aspec + ) + # If the spec passed as argument is concrete we want to check + # the versions match exactly + if (cspec.concrete and compilers and + cspec.version not in [c.version for c in compilers]): + return [] + + return compilers if spec.compiler and spec.compiler.concrete: if (self.check_for_compiler_existence and not @@ -403,7 +412,9 @@ def _proper_compiler_style(cspec, aspec): return True else: # No compiler with a satisfactory spec was found - raise UnavailableCompilerVersionError(other_compiler) + raise UnavailableCompilerVersionError( + other_compiler, spec.architecture + ) else: # We have no hints to go by, grab any compiler compiler_list = spack.compilers.all_compiler_specs() diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 72092a956fc..9024c99cadf 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -620,3 +620,16 @@ def test_adjusting_default_target_based_on_compiler( with spack.concretize.disable_compiler_existence_check(): s = Spec(spec).concretized() assert str(s.architecture.target) == str(expected) + + @pytest.mark.regression('8735,14730') + def test_compiler_version_matches_any_entry_in_compilers_yaml(self): + # Ensure that a concrete compiler with different compiler version + # doesn't match (here it's 4.5 vs. 4.5.0) + with pytest.raises(spack.concretize.UnavailableCompilerVersionError): + s = Spec('mpileaks %gcc@4.5') + s.concretize() + + # An abstract compiler with a version list could resolve to 4.5.0 + s = Spec('mpileaks %gcc@4.5:') + s.concretize() + assert str(s.compiler.version) == '4.5.0' From dd0e18d7b82ea592e972fa15880acd64cefaf262 Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Thu, 20 Feb 2020 15:07:32 -0600 Subject: [PATCH 186/238] Use get_spec in relocated _try_install_from_binary_cache (#15131) * Use get_spec in relocated _try_install_from_binary_cache --- lib/spack/spack/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index 6e772fbb662..9b340b951d3 100755 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -337,7 +337,7 @@ def _try_install_from_binary_cache(pkg, explicit): """ pkg_id = package_id(pkg) tty.debug('Searching for binary cache of {0}'.format(pkg_id)) - specs = binary_distribution.get_specs() + specs = binary_distribution.get_spec(pkg.spec, force=False) binary_spec = spack.spec.Spec.from_dict(pkg.spec.to_dict()) binary_spec._mark_concrete() if binary_spec not in specs: From 8b72cb64dd30cb3976626ab70854b677c9ba392a Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 22:26:07 +0100 Subject: [PATCH 187/238] Add extra version of vc (#15119) * Add extra version of vc * Update package.py * Update package.py * Update var/spack/repos/builtin/packages/vc/package.py Co-Authored-By: Adam J. Stewart * Update package.py Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/vc/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/vc/package.py b/var/spack/repos/builtin/packages/vc/package.py index 1b064778991..7d975c352bc 100644 --- a/var/spack/repos/builtin/packages/vc/package.py +++ b/var/spack/repos/builtin/packages/vc/package.py @@ -12,6 +12,7 @@ class Vc(CMakePackage): homepage = "https://github.com/VcDevel/Vc" url = "https://github.com/VcDevel/Vc/archive/1.3.0.tar.gz" + version('1.4.1', sha256='7e8b57ed5ff9eb0835636203898c21302733973ff8eaede5134dd7cb87f915f6') version('1.3.0', sha256='2309a19eea136e1f9d5629305b2686e226093e23fe5b27de3d6e3d6084991c3a') version('1.2.0', sha256='9cd7b6363bf40a89e8b1d2b39044b44a4ce3f1fd6672ef3fc45004198ba28a2b') version('1.1.0', sha256='281b4c6152fbda11a4b313a0a0ca18565ee049a86f35f672f1383967fef8f501') @@ -20,3 +21,9 @@ class Vc(CMakePackage): description='The build type to build', values=('Debug', 'Release', 'RelWithDebug', 'RelWithDebInfo', 'MinSizeRel')) + + def cmake_args(self): + if self.run_tests: + return ['-DBUILD_TESTING=ON'] + else: + return ['-DBUILD_TESTING=OFF'] From b5b19084deecc81cd1a637e7529e00911fb0e14d Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 22:26:59 +0100 Subject: [PATCH 188/238] Add extra version of py-wheel (#15116) * Add extra version of py-wheel * Update package.py * Update package.py --- var/spack/repos/builtin/packages/py-wheel/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py index 94df34a8f9d..567eefbc520 100644 --- a/var/spack/repos/builtin/packages/py-wheel/package.py +++ b/var/spack/repos/builtin/packages/py-wheel/package.py @@ -12,8 +12,12 @@ class PyWheel(PythonPackage): homepage = "https://pypi.python.org/pypi/wheel" url = "https://pypi.io/packages/source/w/wheel/wheel-0.29.0.tar.gz" + version('0.33.4', sha256='62fcfa03d45b5b722539ccbc07b190e4bfff4bb9e3a4d470dd9f6a0981002565') version('0.33.1', sha256='66a8fd76f28977bb664b098372daef2b27f60dc4d1688cfab7b37a09448f0e9d') version('0.29.0', sha256='1ebb8ad7e26b448e9caa4773d2357849bf80ff9e313964bcaf79cbf0201a1648') version('0.26.0', sha256='eaad353805c180a47545a256e6508835b65a8e830ba1093ed8162f19a50a530c') - depends_on('py-setuptools', type='build') + depends_on('py-setuptools', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) + depends_on('py-pytest@3.0.0:', type='test') + depends_on('py-pytest-cov', type='test') From c78479989514b1a01f2a7c4e03ae6f4157457c43 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 22:27:39 +0100 Subject: [PATCH 189/238] Add extra version of py-urllib3 (#15114) * Add extra version of py-urllib3 * Update package.py * Update package.py * Update package.py * Update var/spack/repos/builtin/packages/py-urllib3/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- .../repos/builtin/packages/py-urllib3/package.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-urllib3/package.py b/var/spack/repos/builtin/packages/py-urllib3/package.py index 891897c1b38..cbe4577ca41 100644 --- a/var/spack/repos/builtin/packages/py-urllib3/package.py +++ b/var/spack/repos/builtin/packages/py-urllib3/package.py @@ -14,6 +14,7 @@ class PyUrllib3(PythonPackage): url = "https://pypi.io/packages/source/u/urllib3/urllib3-1.25.6.tar.gz" version('1.25.6', sha256='9a107b99a5393caf59c7aa3c1249c16e6879447533d0887f4336dde834c7be86') + version('1.25.3', sha256='dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232') version('1.21.1', sha256='b14486978518ca0901a76ba973d7821047409d7f726f22156b24e83fd71382a5') version('1.20', sha256='97ef2b6e2878d84c0126b9f4e608e37a951ca7848e4855a7f7f4437d5c34a72f') version('1.14', sha256='dd4fb13a4ce50b18338c7e4d665b21fd38632c5d4b1d9f1a1379276bd3c08d37') @@ -23,3 +24,13 @@ class PyUrllib3(PythonPackage): depends_on('py-pytest', type='test') depends_on('py-mock', type='test') depends_on('py-tornado', type='test') + + variant('secure', default=False, description='Add SSL/TLS support') + depends_on('py-pyopenssl@0.14:', when='+secure') + depends_on('py-cryptography@1.3.4:', when='+secure') + depends_on('py-idna@2:', when='+secure') + depends_on('py-certifi', when='+secure') + depends_on('py-ipaddress', when='+secure ^python@2.7:2.8') + + variant('socks', default=False, description='SOCKS and HTTP proxy support') + depends_on('py-pysocks@1.5.6,1.5.8:1.999', when='+socks') From e4968a495dbcbee849fdeb72400c948f51ddf561 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 22:28:09 +0100 Subject: [PATCH 190/238] Add extra version of py-widgetsnbextension (#15105) * Add extra version of py-widgetsnbextension * Update dependency version * Update package.py * Update package.py * Update var/spack/repos/builtin/packages/py-widgetsnbextension/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- .../repos/builtin/packages/py-widgetsnbextension/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py index fc54ebc5a8c..aa6dbb31c28 100644 --- a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py +++ b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py @@ -12,8 +12,12 @@ class PyWidgetsnbextension(PythonPackage): homepage = "https://pypi.python.org/pypi/widgetsnbextension" url = "https://pypi.io/packages/source/w/widgetsnbextension/widgetsnbextension-1.2.6.tar.gz" + version('3.5.1', sha256='079f87d87270bce047512400efd70238820751a11d2d8cb137a5a5bdbaf255c7') + version('3.4.2', sha256='fa618be8435447a017fd1bf2c7ae922d0428056cfc7449f7a8641edf76b48265') + version('3.3.0', sha256='c5280a62d293735cdadc7b8884e2affcfb0488420ee09963577f042359726392') version('1.2.6', sha256='c618cfb32978c9517caf0b4ef3aec312f8dd138577745e7b0d4abfcc7315ce51') depends_on('py-setuptools', type='build') - depends_on('python@2.7:2.8,3.3:') + depends_on('python@2.7:2.8,3.3:', type=('build', 'run')) depends_on('py-notebook@4.2.0:', type=('build', 'run')) + depends_on('py-notebook@4.4.1:', type=('build', 'run'), when='@3.3.0:') From 0d84ee6c68dc0bb71997acf64410b196d0c4f05a Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 22:28:45 +0100 Subject: [PATCH 191/238] Add extra version of py-sympy (#15110) * Add extra version of py-sympy * Update package.py --- var/spack/repos/builtin/packages/py-sympy/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-sympy/package.py b/var/spack/repos/builtin/packages/py-sympy/package.py index 7b588cd08ca..8aec875219c 100644 --- a/var/spack/repos/builtin/packages/py-sympy/package.py +++ b/var/spack/repos/builtin/packages/py-sympy/package.py @@ -11,9 +11,11 @@ class PySympy(PythonPackage): homepage = "https://pypi.python.org/pypi/sympy" url = "https://pypi.io/packages/source/s/sympy/sympy-0.7.6.tar.gz" + version('1.4', sha256='71a11e5686ae7ab6cb8feb5bd2651ef4482f8fd43a7c27e645a165e4353b23e1') version('1.3', sha256='e1319b556207a3758a0efebae14e5e52c648fc1db8975953b05fff12b6871b54') version('1.1.1', sha256='ac5b57691bc43919dcc21167660a57cc51797c28a4301a6144eff07b751216a4') version('1.0', sha256='3eacd210d839e4db911d216a9258a3ac6f936992f66db211e22767983297ffae') version('0.7.6', sha256='dfa3927e9befdfa7da7a18783ccbc2fe489ce4c46aa335a879e49e48fc03d7a7') - depends_on('py-mpmath', when='@1.0:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) + depends_on('py-mpmath@0.19:', when='@1.0:', type=('build', 'run')) From ea9aa2c7cb1974e0623e608c272ba97061b3d7ba Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 22:29:12 +0100 Subject: [PATCH 192/238] Add extra version of py-typing (#15113) * Add extra version of py-typing * Update package.py * Fix typo * Update package.py --- var/spack/repos/builtin/packages/py-typing/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-typing/package.py b/var/spack/repos/builtin/packages/py-typing/package.py index 1bc1b0c7040..ee713c92134 100644 --- a/var/spack/repos/builtin/packages/py-typing/package.py +++ b/var/spack/repos/builtin/packages/py-typing/package.py @@ -16,6 +16,7 @@ class PyTyping(PythonPackage): import_modules = ['typing'] version('3.7.4.1', sha256='91dfe6f3f706ee8cc32d38edbbf304e9b7583fb37108fef38229617f8b3eba23') + version('3.6.6', sha256='4027c5f6127a6267a435201981ba156de91ad0d1d98e9ddc2aa173453453492d') version('3.6.4', sha256='d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2') version('3.6.1', sha256='c36dec260238e7464213dcd50d4b5ef63a507972f5780652e835d0228d0edace') From 19af86592b550e2d510884903cee6511a0fb4fed Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 22:29:54 +0100 Subject: [PATCH 193/238] Add extra version of py-tornado; update dependencies (#15112) * Add extra version of py-tornado * Update package.py * Update package.py * Update package.py --- var/spack/repos/builtin/packages/py-tornado/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-tornado/package.py b/var/spack/repos/builtin/packages/py-tornado/package.py index 064311439e5..0aea05faf0c 100644 --- a/var/spack/repos/builtin/packages/py-tornado/package.py +++ b/var/spack/repos/builtin/packages/py-tornado/package.py @@ -13,13 +13,16 @@ class PyTornado(PythonPackage): url = "https://github.com/tornadoweb/tornado/archive/v6.0.3.tar.gz" version('6.0.3', sha256='a97ac3b8c95867e534b48cb6fbbf156f5ca5b20c423bb06894c17b240d7a18fc') + version('5.1.1', sha256='a1da335a2978b9a8c3544cab10076d799442d7988ed0b4f2be035fe4388ca8dd') version('4.4.0', sha256='ae556a0848e5d428d00597a18b38b9ca9d20f4600535e1dd33b3a576ab234194') depends_on('py-setuptools', type='build') # requirements from setup.py depends_on('python@3.5:', when='@6:', type=('build', 'run')) - depends_on('py-backports-ssl-match-hostname', when='^python@:2.7.8', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) + depends_on('py-backports-ssl-match-hostname', when='@:4 ^python@:2.7.8', type=('build', 'run')) depends_on('py-singledispatch', when='^python@:3.3', type=('build', 'run')) - depends_on('py-certifi', when='^python@:3.3', type=('build', 'run')) + depends_on('py-certifi', when='@:4 ^python@:3.3', type=('build', 'run')) depends_on('py-backports-abc@0.4:', when='^python@:3.4', type=('build', 'run')) + depends_on('py-futures', when='@5: ^python@:3.1', type=('build', 'run')) From c5134ff4f2a2687b48fb8345bb07da4ad2585d11 Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 20 Feb 2020 22:30:43 +0100 Subject: [PATCH 194/238] Add extra version of py-terminado (#15111) * Add extra version of py-terminado * Update package.py * Update var/spack/repos/builtin/packages/py-terminado/package.py Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/py-terminado/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-terminado/package.py b/var/spack/repos/builtin/packages/py-terminado/package.py index 9eb91c12aa1..6bc192700e9 100644 --- a/var/spack/repos/builtin/packages/py-terminado/package.py +++ b/var/spack/repos/builtin/packages/py-terminado/package.py @@ -12,8 +12,10 @@ class PyTerminado(PythonPackage): homepage = "https://pypi.python.org/pypi/terminado" url = "https://pypi.io/packages/source/t/terminado/terminado-0.6.tar.gz" + version('0.8.2', sha256='de08e141f83c3a0798b050ecb097ab6259c3f0331b2f7b7750c9075ced2c20c2') version('0.8.1', sha256='55abf9ade563b8f9be1f34e4233c7b7bde726059947a593322e8a553cc4c067a') version('0.6', sha256='2c0ba1f624067dccaaead7d2247cfe029806355cef124dc2ccb53c83229f0126') depends_on('py-tornado@4:', type=('build', 'run')) depends_on('py-ptyprocess', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:', when='@0.8.2:', type=('build', 'run')) From 01bda126924564a399c7d529eb1e94df71ba9e8e Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 20 Feb 2020 22:34:25 +0100 Subject: [PATCH 195/238] libf77zmq (#15125) * libf77zmq * Cleaning mkdirp * Removed install function * Renamed to f77-zmq * Fixed Flake8 * Fixed Flake8 --- .../repos/builtin/packages/f77-zmq/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/f77-zmq/package.py diff --git a/var/spack/repos/builtin/packages/f77-zmq/package.py b/var/spack/repos/builtin/packages/f77-zmq/package.py new file mode 100644 index 00000000000..c78f3f41106 --- /dev/null +++ b/var/spack/repos/builtin/packages/f77-zmq/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) + +import os +from spack import * + + +class F77Zmq(MakefilePackage): + """Fortran binding for the ZeroMQ communication library""" + + homepage = "http://zguide.zeromq.org/" + url = "https://github.com/zeromq/f77_zmq/archive/4.3.1.tar.gz" + + maintainers = ['scemama'] + + version('4.3.1', sha256='a15d72d93022d3e095528d2808c7767cece974a2dc0e2dd95e4c122f60fcf0a8') + + depends_on('libzmq') + depends_on('python', type='build') + + def setup_build_environment(self, env): + env.append_flags('CFLAGS', '-O3') + env.append_flags('CFLAGS', '-g') + + def edit(self, spec, prefix): + cflags = os.environ.get('CFLAGS') + makefile = FileFilter('Makefile') + makefile.filter('CC=.*', + 'CC={0} {1}'.format(spack_cc, + self.compiler.pic_flag)) + makefile.filter('CFLAGS=.*', 'CFLAGS={0}'.format(cflags)) + makefile.filter('PREFIX=.*', 'PREFIX={0}'.format(self.prefix)) + p = self.spec['libzmq'].prefix + os.environ['ZMQ_H'] = "{0}/include/zmq.h".format(p) + mkdirp(prefix.include) + mkdirp(prefix.lib) From 2e387ef5855d533f685478cc15e3d9bea799bf30 Mon Sep 17 00:00:00 2001 From: Peter Scheibel Date: Thu, 20 Feb 2020 13:45:58 -0800 Subject: [PATCH 196/238] Package hashing: fix detection of directives (#14763) The hashing logic looks for function calls that are Spack directives. It expects that when a Spack directive is used that it is referenced directly by name, and that the directive function is not itself retrieved by calling another function. When the hashing logic encountered a function call where the function was determined dynamically, it would fail (attempting to access a name attribute that does not happen to exist in this case). This updates the hashing logic to filter out function calls where the function is determined dynamically when looking for uses of Spack directives. --- lib/spack/spack/test/packages.py | 4 +++ lib/spack/spack/util/package_hash.py | 15 +++++++++++ .../packages/hash-test4/package.py | 27 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin.mock/packages/hash-test4/package.py diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py index c811f9040eb..299c56481e4 100644 --- a/lib/spack/spack/test/packages.py +++ b/lib/spack/spack/test/packages.py @@ -98,6 +98,10 @@ def test_all_same_but_archive_hash(self): assert spec1.package.content_hash(content=content1) != \ spec2.package.content_hash(content=content2) + def test_parse_dynamic_function_call(self): + spec = Spec("hash-test4").concretized() + spec.package.content_hash() + # Below tests target direct imports of spack packages from the # spack.pkg namespace def test_import_package(self): diff --git a/lib/spack/spack/util/package_hash.py b/lib/spack/spack/util/package_hash.py index f689aa9710f..adea1a498b0 100644 --- a/lib/spack/spack/util/package_hash.py +++ b/lib/spack/spack/util/package_hash.py @@ -41,8 +41,23 @@ def __init__(self, spec): self.spec = spec def is_directive(self, node): + """Check to determine if the node is a valid directive + + Directives are assumed to be represented in the AST as a named function + call expression. This means that they will NOT be represented by a + named function call within a function call expression (e.g., as + callbacks are sometimes represented). + + Args: + node (AST): the AST node being checked + + Returns: + (bool): ``True`` if the node represents a known directive, + ``False`` otherwise + """ return (isinstance(node, ast.Expr) and node.value and isinstance(node.value, ast.Call) and + isinstance(node.value.func, ast.Name) and node.value.func.id in spack.directives.__all__) def is_spack_attr(self, node): diff --git a/var/spack/repos/builtin.mock/packages/hash-test4/package.py b/var/spack/repos/builtin.mock/packages/hash-test4/package.py new file mode 100644 index 00000000000..4b7f4d40c0d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/hash-test4/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 HashTest4(Package): + """This package isn't compared with others, but it contains constructs + that package hashing logic has tripped over in the past. + """ + + homepage = "http://www.hashtest4.org" + url = "http://www.hashtest1.org/downloads/hashtest4-1.1.tar.bz2" + + version('1.1', 'a' * 32) + + def install(self, spec, prefix): + pass + + @staticmethod + def examine_prefix(pkg): + pass + + run_after('install')( + examine_prefix) From a03b252522565f3dc226b6b4d8a97d711d961da4 Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Thu, 20 Feb 2020 14:03:47 -0800 Subject: [PATCH 197/238] Restore package-related unsigned binary changes from PR 11107 (#15134) Restore package-related unsigned binary changes from PR 11107 --- lib/spack/spack/installer.py | 23 ++++++++++++++++------- lib/spack/spack/test/installer.py | 10 +++++----- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index 9b340b951d3..6d50b0f15d7 100755 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -211,7 +211,7 @@ def _hms(seconds): return ' '.join(parts) -def _install_from_cache(pkg, cache_only, explicit): +def _install_from_cache(pkg, cache_only, explicit, unsigned=False): """ Install the package from binary cache @@ -220,12 +220,15 @@ def _install_from_cache(pkg, cache_only, explicit): cache_only (bool): only install from binary cache explicit (bool): ``True`` if installing the package was explicitly requested by the user, otherwise, ``False`` + unsigned (bool): ``True`` if binary package signatures to be checked, + otherwise, ``False`` Return: (bool) ``True`` if the package was installed from binary cache, ``False`` otherwise """ - installed_from_cache = _try_install_from_binary_cache(pkg, explicit) + installed_from_cache = _try_install_from_binary_cache(pkg, explicit, + unsigned) pkg_id = package_id(pkg) if not installed_from_cache: pre = 'No binary for {0} found'.format(pkg_id) @@ -298,7 +301,7 @@ def _process_external_package(pkg, explicit): spack.store.db.add(spec, None, explicit=explicit) -def _process_binary_cache_tarball(pkg, binary_spec, explicit): +def _process_binary_cache_tarball(pkg, binary_spec, explicit, unsigned): """ Process the binary cache tarball. @@ -306,6 +309,8 @@ def _process_binary_cache_tarball(pkg, binary_spec, explicit): pkg (PackageBase): the package being installed binary_spec (Spec): the spec whose cache has been confirmed explicit (bool): the package was explicitly requested by the user + unsigned (bool): ``True`` if binary package signatures to be checked, + otherwise, ``False`` Return: (bool) ``True`` if the package was installed from binary cache, @@ -321,19 +326,21 @@ def _process_binary_cache_tarball(pkg, binary_spec, explicit): pkg_id = package_id(pkg) tty.msg('Installing {0} from binary cache'.format(pkg_id)) binary_distribution.extract_tarball(binary_spec, tarball, allow_root=False, - unsigned=False, force=False) + unsigned=unsigned, force=False) pkg.installed_from_binary_cache = True spack.store.db.add(pkg.spec, spack.store.layout, explicit=explicit) return True -def _try_install_from_binary_cache(pkg, explicit): +def _try_install_from_binary_cache(pkg, explicit, unsigned=False): """ Try to install the package from binary cache. Args: pkg (PackageBase): the package to be installed from binary cache explicit (bool): the package was explicitly requested by the user + unsigned (bool): ``True`` if binary package signatures to be checked, + otherwise, ``False`` """ pkg_id = package_id(pkg) tty.debug('Searching for binary cache of {0}'.format(pkg_id)) @@ -343,7 +350,7 @@ def _try_install_from_binary_cache(pkg, explicit): if binary_spec not in specs: return False - return _process_binary_cache_tarball(pkg, binary_spec, explicit) + return _process_binary_cache_tarball(pkg, binary_spec, explicit, unsigned) def _update_explicit_entry_in_db(pkg, rec, explicit): @@ -936,6 +943,7 @@ def _install_task(self, task, **kwargs): keep_stage = kwargs.get('keep_stage', False) skip_patch = kwargs.get('skip_patch', False) tests = kwargs.get('tests', False) + unsigned = kwargs.get('unsigned', False) use_cache = kwargs.get('use_cache', True) verbose = kwargs.get('verbose', False) @@ -948,7 +956,8 @@ def _install_task(self, task, **kwargs): task.status = STATUS_INSTALLING # Use the binary cache if requested - if use_cache and _install_from_cache(pkg, cache_only, explicit): + if use_cache and \ + _install_from_cache(pkg, cache_only, explicit, unsigned): self._update_installed(task) return diff --git a/lib/spack/spack/test/installer.py b/lib/spack/spack/test/installer.py index 02d10fce41e..7d2eec8caf0 100644 --- a/lib/spack/spack/test/installer.py +++ b/lib/spack/spack/test/installer.py @@ -87,7 +87,7 @@ def test_install_from_cache_errors(install_mockery, capsys): # Check with cache-only with pytest.raises(SystemExit): - inst._install_from_cache(spec.package, True, True) + inst._install_from_cache(spec.package, True, True, False) captured = str(capsys.readouterr()) assert 'No binary' in captured @@ -95,7 +95,7 @@ def test_install_from_cache_errors(install_mockery, capsys): assert not spec.package.installed_from_binary_cache # Check when don't expect to install only from binary cache - assert not inst._install_from_cache(spec.package, False, True) + assert not inst._install_from_cache(spec.package, False, True, False) assert not spec.package.installed_from_binary_cache @@ -106,7 +106,7 @@ def test_install_from_cache_ok(install_mockery, monkeypatch): monkeypatch.setattr(inst, '_try_install_from_binary_cache', _true) monkeypatch.setattr(spack.hooks, 'post_install', _noop) - assert inst._install_from_cache(spec.package, True, True) + assert inst._install_from_cache(spec.package, True, True, False) def test_process_external_package_module(install_mockery, monkeypatch, capfd): @@ -133,7 +133,7 @@ def test_process_binary_cache_tarball_none(install_mockery, monkeypatch, monkeypatch.setattr(spack.binary_distribution, 'download_tarball', _none) pkg = spack.repo.get('trivial-install-test-package') - assert not inst._process_binary_cache_tarball(pkg, None, False) + assert not inst._process_binary_cache_tarball(pkg, None, False, False) assert 'exists in binary cache but' in capfd.readouterr()[0] @@ -151,7 +151,7 @@ def _spec(spec): monkeypatch.setattr(spack.database.Database, 'add', _noop) spec = spack.spec.Spec('a').concretized() - assert inst._process_binary_cache_tarball(spec.package, spec, False) + assert inst._process_binary_cache_tarball(spec.package, spec, False, False) assert 'Installing a from binary cache' in capfd.readouterr()[0] From 48375adf17b728429eada27d20dc8972efe59b70 Mon Sep 17 00:00:00 2001 From: Andrew Kamal Date: Thu, 20 Feb 2020 19:21:29 -0500 Subject: [PATCH 198/238] Add decentralized-internet package (#15129) * Create package.py * Update package.py * Update package.py * Update package.py * Update package.py * Update var/spack/repos/builtin/packages/decentralized-internet/package.py Commit suggestion Co-Authored-By: Adam J. Stewart * Update package.py Co-authored-by: Adam J. Stewart --- .../packages/decentralized-internet/package.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 var/spack/repos/builtin/packages/decentralized-internet/package.py diff --git a/var/spack/repos/builtin/packages/decentralized-internet/package.py b/var/spack/repos/builtin/packages/decentralized-internet/package.py new file mode 100644 index 00000000000..fabdba423a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/decentralized-internet/package.py @@ -0,0 +1,14 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class DecentralizedInternet(MakefilePackage): + """A library for building decentralized and grid computing projects""" + homepage = "https://lonero.readthedocs.io" + url = "https://github.com/Lonero-Team/Decentralized-Internet/releases/download/4.2.3/Decentralized.Internet.tar.gz" + maintainers = ['Lonero-Team', 'Mentors4edu'] + version('4.2.3', sha256='2922b9128b411ece2f04d07942a453f1e772548aa27b3936c9f9bcfbc0737058') From 38fc441a3650d4a638170eef553b3015628e4229 Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Thu, 20 Feb 2020 16:55:42 -0800 Subject: [PATCH 199/238] Updated installer module copyright (#15138) Update the copyright for `installer.py`. --- lib/spack/spack/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index 6d50b0f15d7..f4f39f26409 100755 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -1,4 +1,4 @@ -# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) From fabd8693b93342cb777b027f3b4dd089f29b4960 Mon Sep 17 00:00:00 2001 From: iarspider Date: Fri, 21 Feb 2020 19:10:27 +0100 Subject: [PATCH 200/238] Add extra version of py-sqlalchemy (#15109) * Add extra version of py-sqlalchemy * Update package.py * Update package.py * Update package.py * Update package.py * Update package.py * Apply suggestions from code review Co-Authored-By: Adam J. Stewart * Update package.py * Update package.py Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/py-sqlalchemy/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py index d951684c5cc..ae619dbf089 100644 --- a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py +++ b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py @@ -14,6 +14,7 @@ class PySqlalchemy(PythonPackage): version('1.3.9', sha256='272a835758908412e75e87f75dd0179a51422715c125ce42109632910526b1fd') version('1.2.19', sha256='5bb2c4fc2bcc3447ad45716c66581eab982c007dcf925482498d8733f86f17c7') + version('1.2.10', sha256='72325e67fb85f6e9ad304c603d83626d1df684fdf0c7ab1f0352e71feeab69d8') version('1.1.18', sha256='8b0ec71af9291191ba83a91c03d157b19ab3e7119e27da97932a4773a3f664a9') version('1.0.12', sha256='6679e20eae780b67ba136a4a76f83bb264debaac2542beefe02069d0206518d1') @@ -22,3 +23,10 @@ class PySqlalchemy(PythonPackage): depends_on('py-pytest@2.5.2:3.9.0,3.9.3:', type='test') depends_on('py-mock', type='test') depends_on('py-pytest-xdist', type='test') + + variant('backend', description='Python modules for database access', + values=any_combination_of('mysql', 'pymysql', 'postgresql')) + + depends_on('py-mysqlclient', when='backend=mysql', type=('build', 'run')) + depends_on('py-pymysql', when='backend=pymysql', type=('build', 'run')) + depends_on('py-psycopg2', when='backend=postgresql', type=('build', 'run')) From 08b5264607ce700d5f7352fb29923084f343c549 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Fri, 21 Feb 2020 13:11:12 -0500 Subject: [PATCH 201/238] Disable qt3d when opengl is disabled (#15149) * Disable qt3d when opengl is disabled * Remove `-skip qtquick3d` unless QT 5.14 Found while checking build of qt 5.14. --- var/spack/repos/builtin/packages/qt/package.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 4e6af88bb70..c07aa5c86eb 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -359,9 +359,6 @@ def common_config_args(self): '-{0}opengl'.format('' if '+opengl' in self.spec else 'no-'), '-release', '-confirm-license', - '-openssl-linked', - openssl.libs.search_flags, - openssl.headers.include_flags, '-optimized-qmake', '-no-pch', ] @@ -380,7 +377,11 @@ def common_config_args(self): config_args.append('-no-freetype') if '+ssl' in self.spec: - config_args.append('-openssl-linked') + config_args.extend([ + '-openssl-linked', + openssl.libs.search_flags, + openssl.headers.include_flags, + ]) else: config_args.append('-no-openssl') @@ -568,6 +569,12 @@ def configure(self, spec, prefix): if version >= Version('5.10') and '~opengl' in spec: config_args.extend([ '-skip', 'webglplugin', + '-skip', 'qt3d', + ]) + + if version >= Version('5.14') and '~opengl' in spec: + config_args.extend([ + '-skip', 'qtquick3d', ]) configure(*config_args) From 065cbf1bbe39d75d756654e14f32191d531038fb Mon Sep 17 00:00:00 2001 From: "Nichols A. Romero" Date: Fri, 21 Feb 2020 12:11:35 -0600 Subject: [PATCH 202/238] QE+QMCPACK Converter Update February 2020 (#15135) * Add a variant to QE that suppresses upstream patching. Need in order to do ddependency patching. * QE variant fails to build often. Set default variant to False as a user friendly change. * QMCPACK converter patch collides with internal QE patches. Deactivate internal patches when performing dependency patching. * Clearer description of QE patch variant that is also flake8 compliant. --- .../repos/builtin/packages/qmcpack/package.py | 6 +++--- .../builtin/packages/quantum-espresso/package.py | 16 +++++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/qmcpack/package.py b/var/spack/repos/builtin/packages/qmcpack/package.py index 1ac4998c878..0ad9ac24189 100644 --- a/var/spack/repos/builtin/packages/qmcpack/package.py +++ b/var/spack/repos/builtin/packages/qmcpack/package.py @@ -55,7 +55,7 @@ class Qmcpack(CMakePackage, CudaPackage): description='Install with support for basic data analysis tools') variant('gui', default=False, description='Install with Matplotlib (long installation time)') - variant('qe', default=True, + variant('qe', default=False, description='Install with patched Quantum Espresso 6.4.1') # cuda variant implies mixed precision variant by default, but there is @@ -145,11 +145,11 @@ class Qmcpack(CMakePackage, CudaPackage): # Quantum Espresso 6.4.1 (see QMCPACK manual) patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/develop/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.4.1.diff' patch_checksum = '57cb1b06ee2653a87c3acc0dd4f09032fcf6ce6b8cbb9677ae9ceeb6a78f85e2' - depends_on('quantum-espresso@6.4.1+mpi hdf5=parallel', + depends_on('quantum-espresso~patch@6.4.1+mpi hdf5=parallel', patches=patch(patch_url, sha256=patch_checksum), when='+qe+phdf5', type='run') - depends_on('quantum-espresso@6.4.1+mpi hdf5=serial', + depends_on('quantum-espresso~patch@6.4.1+mpi hdf5=serial', patches=patch(patch_url, sha256=patch_checksum), when='+qe~phdf5', type='run') diff --git a/var/spack/repos/builtin/packages/quantum-espresso/package.py b/var/spack/repos/builtin/packages/quantum-espresso/package.py index 5e41de8a5c8..49352192f77 100644 --- a/var/spack/repos/builtin/packages/quantum-espresso/package.py +++ b/var/spack/repos/builtin/packages/quantum-espresso/package.py @@ -51,6 +51,12 @@ class QuantumEspresso(Package): variant('epw', default=False, description='Builds Electron-phonon Wannier executable') + # Apply internal patches by default. May need to be set to to False + # for 3rd party dependency patching + desc = 'Apply internal patches. May need to be set to False for' + desc = desc + ' dependency patching' + variant('patch', default=True, description=desc) + # Dependencies depends_on('blas') depends_on('lapack') @@ -66,8 +72,8 @@ class QuantumEspresso(Package): # TODO: enable building EPW when ~mpi depends_on('mpi', when='+epw') - patch('dspev_drv_elpa.patch', when='@6.1.0:+elpa ^elpa@2016.05.004') - patch('dspev_drv_elpa.patch', when='@6.1.0:+elpa ^elpa@2016.05.003') + patch('dspev_drv_elpa.patch', when='@6.1.0:+patch+elpa ^elpa@2016.05.004') + patch('dspev_drv_elpa.patch', when='@6.1.0:+patch+elpa ^elpa@2016.05.003') # Conflicts # MKL with 64-bit integers not supported. @@ -149,19 +155,19 @@ class QuantumEspresso(Package): # There may still be problems on Mac with MKL detection patch('https://gitlab.com/QEF/q-e/commit/0796e1b7c55c9361ecb6515a0979280e78865e36.diff', sha256='bc8c5b8523156cee002d97dab42a5976dffae20605da485a427b902a236d7e6b', - when='@6.3:6.3.0') + when='+patch@6.3:6.3.0') # QE 6.3 `make install` broken and a patch must be applied patch('https://gitlab.com/QEF/q-e/commit/88e6558646dbbcfcafa5f3fa758217f6062ab91c.diff', sha256='b776890d008e16cca28c31299c62f47de0ba606b900b17cbc27c041f45e564ca', - when='@6.3:6.3.0') + when='+patch@6.3:6.3.0') # QE 6.4.1 patch to work around configure issues that only appear in the # Spack environment. We now are able to support: # `spack install qe~mpi~scalapack hdf5=serial` patch('https://gitlab.com/QEF/q-e/commit/5fb1195b0844e1052b7601f18ab5c700f9cbe648.diff', sha256='b1aa3179ee1c069964fb9c21f3b832aebeae54947ce8d3cc1a74e7b154c3c10f', - when='@6.4.1:6.5.0') + when='+patch@6.4.1:6.5.0') def install(self, spec, prefix): From b399761106bd81c40021a2710c39ae7fafe0ec1d Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 21 Feb 2020 12:32:55 -0600 Subject: [PATCH 203/238] Add clang compiler (#15152) --- var/spack/repos/builtin/packages/pdt/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index 2d099b8dff8..b558456dbc5 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -45,6 +45,8 @@ def configure(self, spec, prefix): options.append('-pgCC') elif self.compiler.name == 'gcc': options.append('-GNU') + elif self.compiler.name == 'clang': + options.append('-clang') else: raise InstallError('Unknown/unsupported compiler family') From abfdabd34ef9fabfbb9968740c90f458f6e35243 Mon Sep 17 00:00:00 2001 From: Robert Blake Date: Fri, 21 Feb 2020 10:41:39 -0800 Subject: [PATCH 204/238] Updating raja versions. (#15148) --- var/spack/repos/builtin/packages/raja/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index 0f9951fe491..ccb1863444f 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -14,6 +14,9 @@ class Raja(CMakePackage): version('develop', branch='develop', submodules='True') version('master', branch='master', submodules='True') + version('0.11.0', tag='v0.11.0', submodules="True") + version('0.10.0', tag='v0.10.0', submodules="True") + version('0.9.0', tag='v0.9.0', submodules="True") version('0.8.0', tag='v0.8.0', submodules="True") version('0.7.0', tag='v0.7.0', submodules="True") version('0.6.0', tag='v0.6.0', submodules="True") From 4a5c64ab6ef728ee625cf4d99c30129da370a99f Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 21 Feb 2020 13:52:19 -0500 Subject: [PATCH 205/238] amrex: New version 20.02 (#15132) --- var/spack/repos/builtin/packages/amrex/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index 9d552861686..8d0b15ead6d 100644 --- a/var/spack/repos/builtin/packages/amrex/package.py +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -18,6 +18,7 @@ class Amrex(CMakePackage): maintainers = ['mic84', 'asalmgren'] version('develop', branch='development') + version('20.02', sha256='33529a23694283d12eb37d4682aa86c9cc1240bd50124efcf4464747a7554147') version('20.01', sha256='f7026d267ca5de79ec7e740264d54230f419776d40feae705e939be0b1d8e0d3') version('19.10', commit='52844b32b7da11e9733b9a7f4a782e51de7f5e1e') # tag:19.10 version('19.08', commit='bdd1146139e8727a513d451075f900c172eb81fd') # tag:19.08 From 0bc4a778bda3c5a6b127bc9979ba1f8157287f06 Mon Sep 17 00:00:00 2001 From: iarspider Date: Fri, 21 Feb 2020 21:29:42 +0100 Subject: [PATCH 206/238] Add extra version of py-jsonschema (#14993) * Add extra version of py-jsonschema * Update dependencies * Update dependencies + flake8 * Add py-pyrsistent package * Update package.py * Update var/spack/repos/builtin/packages/py-jsonschema/package.py Co-Authored-By: Adam J. Stewart * Update package.py * Update package.py * Apply suggestions from code review Co-Authored-By: Adam J. Stewart * Apply suggestions from code review Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- .../builtin/packages/py-jsonschema/package.py | 16 +++++++++++--- .../builtin/packages/py-pyrsistent/package.py | 21 +++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-pyrsistent/package.py diff --git a/var/spack/repos/builtin/packages/py-jsonschema/package.py b/var/spack/repos/builtin/packages/py-jsonschema/package.py index 815decdbb2e..0d62052f9b7 100644 --- a/var/spack/repos/builtin/packages/py-jsonschema/package.py +++ b/var/spack/repos/builtin/packages/py-jsonschema/package.py @@ -12,9 +12,19 @@ class PyJsonschema(PythonPackage): homepage = "http://github.com/Julian/jsonschema" url = "https://pypi.io/packages/source/j/jsonschema/jsonschema-2.6.0.tar.gz" + version('3.0.1', sha256='0c0a81564f181de3212efa2d17de1910f8732fa1b71c42266d983cd74304e20d') version('2.6.0', sha256='6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02') version('2.5.1', sha256='36673ac378feed3daa5956276a829699056523d7961027911f064b52255ead41') - depends_on('py-setuptools', type='build') - depends_on('py-vcversioner', type=('build', 'run')) - depends_on('py-functools32', when="^python@2.7.0:2.7.999", type=('build', 'run')) + depends_on('python@2.6:2.8,3.4:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.5:', when='@3:', type=('build', 'run')) + + depends_on('py-setuptools', type='build', when='@:2') + depends_on('py-setuptools', type=('build', 'run'), when='@3:') + depends_on('py-vcversioner', type='build', when='@:2') + depends_on('py-setuptools-scm', type='build', when='@3:') + + depends_on('py-functools32', when="^python@:2", type=('build', 'run')) + 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')) diff --git a/var/spack/repos/builtin/packages/py-pyrsistent/package.py b/var/spack/repos/builtin/packages/py-pyrsistent/package.py new file mode 100644 index 00000000000..0a1baafdd83 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyrsistent/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 PyPyrsistent(PythonPackage): + """Pyrsistent is a number of persistent collections + (by some referred to as functional data structures). + Persistent in the sense that they are immutable.""" + + homepage = "http://github.com/tobgu/pyrsistent/" + url = "https://pypi.io/packages/source/p/pyrsistent/pyrsistent-0.15.7.tar.gz" + + version('0.15.7', sha256='cdc7b5e3ed77bed61270a47d35434a30617b9becdf2478af76ad2c6ade307280') + + depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-six', type=('build', 'run')) From 6d8e0699f4d558c031ceb4c4e2f2414b8a530aac Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 21 Feb 2020 15:30:25 -0500 Subject: [PATCH 207/238] shtools: New package (#15133) * shtools: New package * shtools: Convert to MakefilePackage, use Spack's generic compiler flags * shtools: Make function location explicit --- .../repos/builtin/packages/shtools/package.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/shtools/package.py diff --git a/var/spack/repos/builtin/packages/shtools/package.py b/var/spack/repos/builtin/packages/shtools/package.py new file mode 100644 index 00000000000..77871d7a369 --- /dev/null +++ b/var/spack/repos/builtin/packages/shtools/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 Shtools(MakefilePackage): + """SHTOOLS - Spherical Harmonic Tools""" + + homepage = "https://shtools.github.io/SHTOOLS/" + url = "https://github.com/SHTOOLS/SHTOOLS/archive/v4.5.tar.gz" + + maintainers = ['eschnett'] + + version('4.5', sha256='1975a2a2bcef8c527d321be08c13c2bc479e0d6b81c468a3203f95df59be4f89') + + # Note: This package also provides Python wrappers. We do not + # install these properly yet, only the Fortran library is + # installed. + + variant('openmp', default=True, description="Enable OpenMP support") + + depends_on('blas') + depends_on('fftw') + depends_on('lapack') + + # Options for the Makefile + def makeopts(self, spec, prefix): + return [ + "F95={0}".format(self.compiler.fc), + ("F95FLAGS={0} -O3 -std=f2003 -ffast-math". + format(self.compiler.pic_flag)), + "OPENMPFLAGS={0}".format(self.compiler.openmp_flag), + "BLAS={0}".format(spec['blas'].libs), + "FFTW={0}".format(spec['fftw'].libs), + "LAPACK={0}".format(spec['lapack'].libs), + "PREFIX={0}".format(prefix), + ] + + def build(self, spec, prefix): + target = 'fortran-mp' if spec.satisfies('+openmp') else 'fortran' + make(target, *self.makeopts(self, spec, prefix)) + + def install(self, spec, prefix): + make('install', *self.makeopts(self, spec, prefix)) From 6764a9464d2c49fb76cca7f90749b0dd53a8786e Mon Sep 17 00:00:00 2001 From: Robert Blake Date: Fri, 21 Feb 2020 12:42:37 -0800 Subject: [PATCH 208/238] Changes necessary to build lbann@develop (#15153) * Necessary changes to get lbann develop to compile. * Reformatting for flake8 * More flake8 changes. * Removing redundant clara dependency. --- var/spack/repos/builtin/packages/lbann/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index cd8b81c3d57..04b044610fa 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -183,8 +183,9 @@ def cmake_args(self): args.extend(['-DAluminum_DIR={0}'.format(spec['aluminum'].prefix)]) if '+conduit' in spec: - args.extend(['-DLBANN_CONDUIT_DIR={0}'.format( - spec['conduit'].prefix)]) + args.extend([ + '-DLBANN_CONDUIT_DIR={0}'.format(spec['conduit'].prefix), + '-DConduit_DIR={0}'.format(spec['conduit'].prefix)]) # Add support for OpenMP if (self.spec.satisfies('%clang')): From 16a9464b5cb5ba9765cb06a129aa71a82882298e Mon Sep 17 00:00:00 2001 From: Cody Balos Date: Fri, 21 Feb 2020 12:54:27 -0800 Subject: [PATCH 209/238] sundials: add version 5.1.0 and trilinos variant (#15155) * sundials: add version 5.1.0 and trilinos variant * sundials: add version 5.1.0 and trilinos variant --- .../builtin/packages/sundials/package.py | 55 +++++++++++++++++-- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index db1dd427533..a76b36eacba 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -21,6 +21,7 @@ class Sundials(CMakePackage): # Versions # ========================================================================== version('develop', branch='develop') + version('5.1.0', sha256='fb22d14fad42203809dc46d046b001149ec4e901b23882bd4a80619157fd9b21') version('5.0.0', sha256='345141ec01c641d0bdfb3476c478b7e74fd6a7192a478a27cafe75d9da2d7dd3') version('4.1.0', sha256='280de1c27b2360170a6f46cb3799b2aee9dff3bddbafc8b08c291a47ab258aa5') version('4.0.1', sha256='29e409c8620e803990edbda1ebf49e03a38c08b9187b90658d86bddae913aed4') @@ -65,9 +66,9 @@ class Sundials(CMakePackage): variant('pthread', default=False, description='Enable Pthreads parallel vector') variant('cuda', default=False, - description='Enable CUDA parallel vector') + description='Enable CUDA vector and solvers') variant('raja', default=False, - description='Enable RAJA parallel vector') + description='Enable RAJA vector') # External libraries variant('hypre', default=False, @@ -77,11 +78,13 @@ class Sundials(CMakePackage): variant('klu', default=False, description='Enable KLU sparse, direct solver') variant('petsc', default=False, - description='Enable PETSc MPI parallel vector') + description='Enable PETSc interfaces') variant('superlu-mt', default=False, description='Enable SuperLU_MT sparse, direct solver') variant('superlu-dist', default=False, description='Enable SuperLU_DIST sparse, direct solver') + variant('trilinos', default=False, + description='Enable Trilinos interfaces') # Library type variant('shared', default=True, @@ -130,6 +133,7 @@ class Sundials(CMakePackage): conflicts('+examples-cuda', when='@:2.7.0') conflicts('+superlu-dist', when='@:4.1.0') conflicts('+f2003', when='@:4.1.0') + conflicts('+trilinos', when='@:4.1.0') # External libraries incompatible with 64-bit indices conflicts('+lapack', when='@3.0.0: +int64') @@ -173,6 +177,7 @@ class Sundials(CMakePackage): depends_on('petsc +mpi', when='+petsc') depends_on('hypre +mpi', when='+hypre') depends_on('superlu-dist@6.1.1:', when='+superlu-dist') + depends_on('trilinos+tpetra', when='+trilinos') # Require that external libraries built with the same precision depends_on('petsc~double~complex', when='+petsc precision=single') @@ -253,8 +258,7 @@ def on_off(varstr): '-DMPI_ENABLE=%s' % on_off('+mpi'), '-DOPENMP_ENABLE=%s' % on_off('+openmp'), '-DPTHREAD_ENABLE=%s' % on_off('+pthread'), - '-DCUDA_ENABLE=%s' % on_off('+cuda'), - '-DRAJA_ENABLE=%s' % on_off('+raja') + '-DCUDA_ENABLE=%s' % on_off('+cuda') ]) # MPI support @@ -274,6 +278,10 @@ def on_off(varstr): '-DHYPRE_INCLUDE_DIR=%s' % spec['hypre'].prefix.include, '-DHYPRE_LIBRARY_DIR=%s' % spec['hypre'].prefix.lib ]) + else: + args.extend([ + '-DHYPRE_ENABLE=OFF' + ]) # Building with KLU if '+klu' in spec: @@ -282,6 +290,10 @@ def on_off(varstr): '-DKLU_INCLUDE_DIR=%s' % spec['suite-sparse'].prefix.include, '-DKLU_LIBRARY_DIR=%s' % spec['suite-sparse'].prefix.lib ]) + else: + args.extend([ + '-DKLU_ENABLE=OFF' + ]) # Building with LAPACK if '+lapack' in spec: @@ -290,6 +302,10 @@ def on_off(varstr): '-DLAPACK_LIBRARIES=%s' % (spec['lapack'].libs + spec['blas'].libs).joined(';') ]) + else: + args.extend([ + '-DLAPACK_ENABLE=OFF' + ]) # Building with PETSc if '+petsc' in spec: @@ -302,12 +318,21 @@ def on_off(varstr): '-DPETSC_INCLUDE_DIR=%s' % spec['petsc'].prefix.include, '-DPETSC_LIBRARY_DIR=%s' % spec['petsc'].prefix.lib ]) + else: + args.extend([ + '-DPETSC_ENABLE=OFF' + ]) # Building with RAJA if '+raja' in spec: args.extend([ + '-DRAJA_ENABLE=ON', '-DRAJA_DIR=%s' % spec['raja'].prefix.share.raja.cmake ]) + else: + args.extend([ + '-DRAJA_ENABLE=OFF' + ]) # Building with SuperLU_MT if '+superlu-mt' in spec: @@ -327,6 +352,10 @@ def on_off(varstr): args.append('-DSUPERLUMT_THREAD_TYPE=OpenMP') else: args.append('-DSUPERLUMT_THREAD_TYPE=Pthread') + else: + args.extend([ + '-DSUPERLUMT_ENABLE=OFF' + ]) # Building with SuperLU_DIST if '+superlu-dist' in spec: @@ -341,6 +370,22 @@ def on_off(varstr): '-DSUPERLUDIST_OpenMP=%s' % on_off('^superlu-dist+openmp') ]) + else: + args.extend([ + '-DSUPERLUDIST_ENABLE=OFF' + ]) + + # Building with Trilinos + if '+trilinos' in spec: + args.extend([ + '-DTrilinos_ENABLE=ON', + '-DTrilinos_DIR=%s' + % spec['trilinos'].prefix + ]) + else: + args.extend([ + '-DTrilinos_ENABLE=OFF' + ]) # Examples if spec.satisfies('@3.0.0:'): From 82be8965f2802d3d556f465786e24aaa160f25f0 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 21 Feb 2020 23:50:54 +0100 Subject: [PATCH 210/238] Emit a sensible error message if compiler's target is overly specific (#14888) * Emit a sensible error message if compiler's target is overly specific fixes #14798 fixes #13733 Compiler specifications require a generic architecture family as their target. This commit improves the error message that is displayed to users if they edit compilers.yaml and use an overly specific name. --- lib/spack/spack/compilers/__init__.py | 8 ++++++++ lib/spack/spack/test/compilers.py | 25 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index a092c930d7c..771459f7f3c 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -413,6 +413,14 @@ def get_compilers(config, cspec=None, arch_spec=None): assert arch_spec is None if arch_spec and target and (target != family and target != 'any'): + # If the family of the target is the family we are seeking, + # there's an error in the underlying configuration + if llnl.util.cpu.targets[target].family == family: + msg = ('the "target" field in compilers.yaml accepts only ' + 'target families [replace "{0}" with "{1}"' + ' in "{2}" specification]') + msg = msg.format(str(target), family, items.get('spec', '??')) + raise ValueError(msg) continue compilers.append(_compiler_from_config_entry(items)) diff --git a/lib/spack/spack/test/compilers.py b/lib/spack/spack/test/compilers.py index 9395ddba80b..51eedd748fd 100644 --- a/lib/spack/spack/test/compilers.py +++ b/lib/spack/spack/test/compilers.py @@ -485,3 +485,28 @@ def test_fj_version_detection(version_str, expected_version): def test_detecting_mixed_toolchains(compiler_spec, expected_result, config): compiler = spack.compilers.compilers_for_spec(compiler_spec).pop() assert spack.compilers.is_mixed_toolchain(compiler) is expected_result + + +@pytest.mark.regression('14798,13733') +def test_raising_if_compiler_target_is_over_specific(config): + # Compiler entry with an overly specific target + compilers = [{'compiler': { + 'spec': 'gcc@9.0.1', + 'paths': { + 'cc': '/usr/bin/gcc-9', + 'cxx': '/usr/bin/g++-9', + 'f77': '/usr/bin/gfortran-9', + 'fc': '/usr/bin/gfortran-9' + }, + 'flags': {}, + 'operating_system': 'ubuntu18.04', + 'target': 'haswell', + 'modules': [], + 'environment': {}, + 'extra_rpaths': [] + }}] + arch_spec = spack.spec.ArchSpec(('linux', 'ubuntu18.04', 'haswell')) + with spack.config.override('compilers', compilers): + cfg = spack.compilers.get_compiler_config() + with pytest.raises(ValueError): + spack.compilers.get_compilers(cfg, 'gcc@9.0.1', arch_spec) From 9f2cee43cfaeeec0d4fa0cc34e09f2aa739494da Mon Sep 17 00:00:00 2001 From: darmac Date: Sat, 22 Feb 2020 22:58:25 +0800 Subject: [PATCH 211/238] lighttpd : fix pcre depends (#15168) --- var/spack/repos/builtin/packages/lighttpd/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/lighttpd/package.py b/var/spack/repos/builtin/packages/lighttpd/package.py index 70e3a7a8b8e..3231a80f86f 100644 --- a/var/spack/repos/builtin/packages/lighttpd/package.py +++ b/var/spack/repos/builtin/packages/lighttpd/package.py @@ -21,5 +21,7 @@ class Lighttpd(CMakePackage): version('1.4.50', sha256='c9a9f175aca6db22ebebbc47de52c54a99bbd1dce8d61bb75103609a3d798235') version('1.4.49', sha256='8b744baf9f29c386fff1a6d2e435491e726cb8d29cfdb1fe20ab782ee2fc2ac7') + depends_on('pcre') + def cmake_args(self): return ["-DSBINDIR=bin"] From f961f64215d01a6beceb85f382a799f5d2278b70 Mon Sep 17 00:00:00 2001 From: darmac Date: Sat, 22 Feb 2020 22:58:54 +0800 Subject: [PATCH 212/238] add new package : acpid (#15167) --- .../repos/builtin/packages/acpid/package.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 var/spack/repos/builtin/packages/acpid/package.py diff --git a/var/spack/repos/builtin/packages/acpid/package.py b/var/spack/repos/builtin/packages/acpid/package.py new file mode 100644 index 00000000000..15a73f36d46 --- /dev/null +++ b/var/spack/repos/builtin/packages/acpid/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 Acpid(AutotoolsPackage): + """ACPID used to try to handle events internally. Rather than try to climb + an ever-growing mountain, ACPID now lets YOU define what events to handle. + Any event that publishes itself to /proc/acpi/event can be handled. + ACPID reads a set of configuration files which define event->action pairs. + This is how you make it do stuff. See the man page for details.""" + + homepage = "http://www.tedfelix.com" + url = "https://github.com/Distrotech/acpid/archive/2.0.28.tar.gz" + + version('2.0.28', sha256='cb5709b96f85e1bfee7a3fc17e56bef7244caa1b0ad762a4813fe731ef3c8438') + version('2.0.27', sha256='da4691f408d9ef201937eaab7c894072ee8aa0ba35794f2388b606b3208fab07') + version('2.0.26', sha256='ac7238dc5ecc9a915e95d5b54be12b6221d0a0ad09109f9024e50946ecd3c602') + version('2.0.25', sha256='947d2e4f9b2d61a728ce5d6139901f1b666dcef5e2a48833cb33d82895e261cf') + version('2.0.24', sha256='05903901369c4ebea1d24e445b4a1d516dd3b07e7864cc752a2d09b4147e1985') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') From 3104bfe93e9544fc0169e7037e1a9fbc065cb2a0 Mon Sep 17 00:00:00 2001 From: darmac Date: Sat, 22 Feb 2020 22:59:26 +0800 Subject: [PATCH 213/238] add new package : advancecomp (#15166) --- .../builtin/packages/advancecomp/package.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 var/spack/repos/builtin/packages/advancecomp/package.py diff --git a/var/spack/repos/builtin/packages/advancecomp/package.py b/var/spack/repos/builtin/packages/advancecomp/package.py new file mode 100644 index 00000000000..b429ceda914 --- /dev/null +++ b/var/spack/repos/builtin/packages/advancecomp/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 Advancecomp(AutotoolsPackage): + """AdvanceCOMP contains recompression utilities for your .zip archives, + .png images, .mng video clips and .gz files.""" + + homepage = "http://www.advancemame.it" + url = "https://github.com/amadvance/advancecomp/archive/v2.1.tar.gz" + + version('2.1', sha256='6113c2b6272334af710ba486e8312faa3cee5bd6dc8ca422d00437725e2b602a') + version('2.0', sha256='caa63332cd141db17988eb89c662cf76bdde72f60d4de7cb0fe8c7e51eb40eb7') + version('1.23', sha256='fe89d6ab382efc6b6be536b8d58113f36b83d82783d5215c261c14374cba800a') + version('1.22', sha256='b8c482027a5f78d9a7f871cbba19cc896ed61653d1d93034c9dbe55484952605') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') From 1a479b5e9e4c99d32812822a0b94298c3c013b1e Mon Sep 17 00:00:00 2001 From: darmac Date: Sat, 22 Feb 2020 23:00:55 +0800 Subject: [PATCH 214/238] add new package : apachetop (#15164) --- .../builtin/packages/apachetop/package.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 var/spack/repos/builtin/packages/apachetop/package.py diff --git a/var/spack/repos/builtin/packages/apachetop/package.py b/var/spack/repos/builtin/packages/apachetop/package.py new file mode 100644 index 00000000000..19943c849cc --- /dev/null +++ b/var/spack/repos/builtin/packages/apachetop/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 Apachetop(AutotoolsPackage): + """ApacheTop watches a logfile generated by Apache (in standard common or + combined logformat, and generates human-parsable output in realtime.) + See the INSTALL file for ./configure options (there's a few newly added + since v0.11)""" + + homepage = "https://github.com/tessus/apachetop" + url = "https://github.com/tessus/apachetop/archive/0.19.7.tar.gz" + + version('0.19.7', sha256='88abf58ee5d7882e4cc3fa2462865ebbf0e8f872fdcec5186abe16e7bff3d4a5') + version('0.18.4', sha256='1cbbfd1bf12275fb21e0cb6068b9050b2fee8c276887054a015bf103a1ae9cc6') + version('0.17.4', sha256='892ed3b83b45eb38811e74d068089b1e8c34707787f240ce133d8c93198d7ff0') + version('0.15.6', sha256='7343caeb1adab795439b7be9cf47ce6049751ae948537d5f27251c075264801a') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + depends_on('readline') From 50b5e6b94b6fd35d53a222abc88db542855efd03 Mon Sep 17 00:00:00 2001 From: darmac Date: Sat, 22 Feb 2020 23:01:27 +0800 Subject: [PATCH 215/238] add new package : audit-userspace (#15163) --- .../packages/audit-userspace/package.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 var/spack/repos/builtin/packages/audit-userspace/package.py diff --git a/var/spack/repos/builtin/packages/audit-userspace/package.py b/var/spack/repos/builtin/packages/audit-userspace/package.py new file mode 100644 index 00000000000..150a4073197 --- /dev/null +++ b/var/spack/repos/builtin/packages/audit-userspace/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 AuditUserspace(AutotoolsPackage): + """Linux audit userspace""" + + homepage = "https://github.com/linux-audit/audit-userspace" + url = "https://github.com/linux-audit/audit-userspace/archive/v2.8.5.tar.gz" + + version('2.8.5', sha256='835ffdd65056ba0c26509dbf48882713b00dbe70e1d8cf25d538501136c2e3e9') + version('2.8.4', sha256='089dfdceb38edf056202a6de4892fd0c9aaa964c08bd7806c5d0c7c33f09e18d') + version('2.8.3', sha256='c239e3813b84bc264aaf2f796c131c1fe02960244f789ec2bd8d88aad4561b29') + version('2.8.2', sha256='0a312a8487190d97715d46abb30aa2abd464b55f21d5c2d24428baa320ee4ce2') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + depends_on('openldap') + depends_on('swig') From 0ea6bab984abee943d93cdfa90273b7a7aabcf8f Mon Sep 17 00:00:00 2001 From: darmac Date: Sat, 22 Feb 2020 23:02:34 +0800 Subject: [PATCH 216/238] add new package : brltty (#15161) --- .../repos/builtin/packages/brltty/package.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 var/spack/repos/builtin/packages/brltty/package.py diff --git a/var/spack/repos/builtin/packages/brltty/package.py b/var/spack/repos/builtin/packages/brltty/package.py new file mode 100644 index 00000000000..25757b259fc --- /dev/null +++ b/var/spack/repos/builtin/packages/brltty/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 Brltty(AutotoolsPackage): + """BRLTTY is a background process (daemon) providing access to the + Linux/Unix console (when in text mode) for a blind person using + a refreshable braille display.""" + + homepage = "http://brltty.app/" + url = "https://github.com/brltty/brltty/archive/BRLTTY-6.0.tar.gz" + + version('6.0', sha256='acfea5274bdc9230b0ea1a87f8796e241615d4d2c1ba08d87601b9d116c7804c') + version('5.6', sha256='74f35043943525396b340b9f65f0d73c3cc4054a8f63d1c685f27ccf59f46c5d') + version('5.5', sha256='cd80a0d225f13779791dc3a72d7f137c06c48e5f2c9600e80a565d2378422207') + version('5.4', sha256='9ad5a540d29438a755f8b8f1f1534e0eba601c604f3d8223fa00b802959ec636') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + depends_on('expat') + + def autoreconf(self, spec, prefix): + bash = which('bash') + bash('autogen') From 629c69d383fc723ea1c6a4554d224cf367e66cfb Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Sat, 22 Feb 2020 14:09:22 -0500 Subject: [PATCH 217/238] Automatically run LLDB codesign script on mac (#15169) Newer versions of LLVM provide a one-line command to set up LLDB code signing. Now the build will abort only if this command fails. https://lldb.llvm.org/resources/build.html#code-signing-on-macos --- .../repos/builtin/packages/llvm/package.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 871559d453b..1644a8e7501 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -162,11 +162,18 @@ def check_darwin_lldb_codesign_requirement(self): llvm_check_file) except ProcessError: - explanation = ('The "lldb_codesign" identity must be available' - ' to build LLVM with LLDB. See https://lldb.llvm' - '.org/resources/build.html#code-signing-on-macos' - 'for details on how to create this identity.') - raise RuntimeError(explanation) + # Newer LLVM versions have a simple script that sets up + # automatically + setup = Executable("./lldb/scripts/macos-setup-codesign.sh") + try: + setup() + except Exception: + raise RuntimeError( + 'The "lldb_codesign" identity must be available to build ' + 'LLVM with LLDB. See https://lldb.llvm.org/resources/' + 'build.html#code-signing-on-macos for details on how to ' + 'create this identity.' + ) def setup_build_environment(self, env): env.append_flags('CXXFLAGS', self.compiler.cxx11_flag) From b927e3799f1ef8c9e12886a45566dfc66b93031e Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Sun, 23 Feb 2020 11:45:19 -0500 Subject: [PATCH 218/238] Fix silex build (#15172) * Mark silo+silex as requiring QT4 * Add missing readline dependency to silo * Fix silo QT4 usage and verify silex works on mac ``` -- darwin-mojave-x86_64 / clang@11.0.0-apple -------------------- 7gdcud4 silo@4.10.2+fortran~mpi patches=7b5a1dc2a0e358e667088d77e7caa780967fa8ea60be89c44986605df9990abe +pic+shared+silex pk3wbwd hdf5@1.10.6~cxx~debug~fortran+hl~mpi+pic+shared+szip~threadsafe slsy6ko libszip@2.1.1 xj36ejk zlib@1.2.11+optimize+pic+shared u4662xx libx11@1.6.4 3lpe6j3 qt@4.8.7~dbus~examples~framework freetype=none ~gtk~opengl patches=03f9893882c63a9a9617d9ecab9caf80661c96df13f596a9b24fc4579490144a,a4f37427b34d88df6a6adc16e1e6c805087d4f3a7c658e1797450b0912fcbf5d,f17e0b5fb1f43bccadf7298533eca57294f4acab11ed83b176c61c441f745c19 ~phonon+shared~sql~ssl~tools~webkit shdhdbh glib@2.56.3~libmount patches=c325997b72a205ad1638bb3e3ba0e5b73e3d32ce63b2d0d3282f3e3a2ff4663c tracing=none msyeqht gettext@0.20.1+bzip2+curses+git~libunistring+libxml2+tar+xz ysmjykg bzip2@1.0.8+shared w354vrb libxml2@2.9.9~python jg6ekuh libiconv@1.16 b7n722h xz@5.2.4 zbgxvxi ncurses@6.1~symlinks~termlib 2e6sifw tar@1.32 7yg7qah libffi@3.2.1 zg55iyu pcre@8.43~jit+multibyte+utf zqrlxlz perl@5.30.0+cpanm+shared+threads un7wzvl python@3.7.4+bz2+ctypes+dbm~debug+libxml2+lzma~nis~optimizations patches=210df3f28cde02a8135b58cc4168e70ab91dbf9097359d05938f1e2843875e57 +pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tix~tkinter~ucs4+uuid+zlib l4gxq46 expat@2.2.9~libbsd 3t4dwsv gdbm@1.18.1 h2bjtz2 readline@8.0 ugvknwc openssl@1.1.1d+systemcerts hsmq6ou sqlite@3.30.1~column_metadata+fts~functions~rtree lpfob23 icu4c@65.1 cxxstd=11 lf66vbr inputproto@2.3.2 afovyhg libjpeg-turbo@2.0.3 5dgw556 libmng@2.0.3 build_type=RelWithDebInfo 3z4lw2w lcms@2.9 flleuyu libtiff@4.0.10 67tigfp libpng@1.6.37 ``` --- .../repos/builtin/packages/silo/package.py | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index ef39dfdaafe..9b980ba0ac8 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -31,14 +31,22 @@ class Silo(AutotoolsPackage): depends_on('hdf5~mpi', when='~mpi') depends_on('mpi', when='+mpi') depends_on('hdf5+mpi', when='+mpi') - depends_on('qt', when='+silex') + depends_on('qt~framework@4.8:4.9', when='+silex') + depends_on('libx11', when='+silex') + depends_on('readline') depends_on('zlib') patch('remove-mpiposix.patch', when='@4.8:4.10.2') def flag_handler(self, name, flags): - if name == 'ldflags' and self.spec['hdf5'].satisfies('~shared'): - flags.append('-ldl') + spec = self.spec + if name == 'ldflags': + if spec['hdf5'].satisfies('~shared'): + flags.append('-ldl') + flags.append(spec['readline'].libs.search_flags) + elif name in ('cflags', 'cxxflags', 'fcflags'): + if '+pic' in spec: + flags.append(self.compiler.pic_flag) return (flags, None, None) @when('%clang@9:') @@ -81,13 +89,13 @@ def configure_args(self): ] if '+silex' in spec: - config_args.append('--with-Qt-dir=%s' % spec['qt'].prefix) - - if '+pic' in spec: - config_args += [ - 'CFLAGS={0}'.format(self.compiler.pic_flag), - 'CXXFLAGS={0}'.format(self.compiler.pic_flag), - 'FCFLAGS={0}'.format(self.compiler.pic_flag)] + x = spec['libx11'] + config_args.extend([ + '--with-Qt-dir=' + spec['qt'].prefix, + '--with-Qt-lib=QtGui -lQtCore', + '--x-includes=' + x.prefix.include, + '--x-libraries=' + x.prefix.lib, + ]) if '+mpi' in spec: config_args.append('CC=%s' % spec['mpi'].mpicc) From fd609776130d8ddc3d6bee0cdec9fe88653670b3 Mon Sep 17 00:00:00 2001 From: iarspider Date: Sun, 23 Feb 2020 19:07:00 +0100 Subject: [PATCH 219/238] Separate HepMC2 and HepMC3 build recipes; Python3 support for HepMC3 (#15147) * Fixes & additional variant(s) for HepMC3 * Syntax * Restore recipe for HepMC2 * Remove FIXME * Update package.py * Apply suggestions from code review Co-Authored-By: Adam J. Stewart Co-authored-by: Adam J. Stewart --- .../repos/builtin/packages/hepmc/package.py | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/hepmc/package.py b/var/spack/repos/builtin/packages/hepmc/package.py index 2828a179ff1..d208e7ecde3 100644 --- a/var/spack/repos/builtin/packages/hepmc/package.py +++ b/var/spack/repos/builtin/packages/hepmc/package.py @@ -28,24 +28,46 @@ class Hepmc(CMakePackage): variant('python', default=False, description='Enable Python bindings') variant('rootio', default=False, description='Enable ROOT I/O') + variant('interfaces', default=False, description='Install interfaces for some Monte-Carlo Event Gens') depends_on('cmake@2.8.9:', type='build') - # FIXME: Officially supports Python3, but the build system doesn't find it - depends_on('python@:2.99.99', when='+python') + depends_on('python', when='+python') depends_on('root', when='+rootio') - conflicts('+python', when='@:3.1.99') - conflicts('+rootio', when='@:2.99.99') + conflicts('+python', when='@:3.1') + conflicts('+rootio', when='@:2') + conflicts('+interfaces', when='@:2') + @when('@:2') + def cmake_args(self): + return ['-Dmomentum:STRING=GEV', '-Dlength:STRING=MM'] + + @when('@3:') def cmake_args(self): spec = self.spec - return [ + args = [ '-Dmomentum:STRING=GEV', '-Dlength:STRING=MM', '-DHEPMC3_ENABLE_PYTHON={0}'.format(spec.satisfies('+python')), - '-DHEPMC3_ENABLE_ROOTIO={0}'.format(spec.satisfies('+rootio')) + '-DHEPMC3_ENABLE_ROOTIO={0}'.format(spec.satisfies('+rootio')), + '-DHEPMC3_INSTALL_INTERFACES={0}'.format( + spec.satisfies('+interfaces')), ] + if self.spec.satisfies('+python'): + py_ver = spec['python'].version.up_to(2) + py_sitepkg = join_path(self.prefix, site_packages_dir) + args.extend([ + '-DHEPMC3_PYTHON_VERSIONS={0}'.format(py_ver), + '-DHEPMC3_Python_SITEARCH{0}={1}'.format( + py_ver.joined, py_sitepkg) + ]) + + if self.spec.satisfies('+rootio'): + args.append('-DROOT_DIR={0}'.format(self.spec['root'].prefix)) + + return args + def url_for_version(self, version): if version > Version("3.0.0"): url = "http://hepmc.web.cern.ch/hepmc/releases/HepMC3-{0}.tar.gz" From b935d882828674de309d7ed823d1bace1e520614 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sun, 23 Feb 2020 19:22:50 +0100 Subject: [PATCH 220/238] create: Mention that python dependency does not have to be added (#15173) A generic python dependency is already added implicitly by the PythonPackage class. --- lib/spack/spack/cmd/create.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index f9b7a382ea8..304b531b492 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -245,7 +245,9 @@ class PythonPackageTemplate(PackageTemplate): base_class_name = 'PythonPackage' dependencies = """\ - # FIXME: Add dependencies if required. + # FIXME: Add dependencies if required. Only add the python dependency + # if you need specific versions. A generic python dependency is + # added implicity by the PythonPackage class. # depends_on('python@2.X:2.Y,3.Z:', type=('build', 'run')) # depends_on('py-setuptools', type='build') # depends_on('py-foo', type=('build', 'run'))""" From a5461f5cba678318e814524b768449ce30c5fadc Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sun, 23 Feb 2020 19:46:22 +0100 Subject: [PATCH 221/238] py-setproctitle: Add new package (#15170) --- .../packages/py-setproctitle/package.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-setproctitle/package.py diff --git a/var/spack/repos/builtin/packages/py-setproctitle/package.py b/var/spack/repos/builtin/packages/py-setproctitle/package.py new file mode 100644 index 00000000000..972e595cadb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-setproctitle/package.py @@ -0,0 +1,18 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class PySetproctitle(PythonPackage): + """The setproctitle module allows a process to change its title (as + displayed by system tools such as ps and top).""" + + homepage = "https://github.com/dvarrazzo/py-setproctitle" + url = "https://pypi.io/packages/source/s/setproctitle/setproctitle-1.1.10.tar.gz" + + version('1.1.10', sha256='6283b7a58477dd8478fbb9e76defb37968ee4ba47b05ec1c053cb39638bd7398') + + depends_on('py-setuptools', type='build') From 388960f044bb1f114d8ca4a5fde4599f7ae48c8f Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 23 Feb 2020 16:59:01 -0800 Subject: [PATCH 222/238] version bump: 0.14.0 --- lib/spack/spack/__init__.py | 2 +- lib/spack/spack/solver/blis.lp | 2126 +++++ lib/spack/spack/solver/hdf5.lp | 9304 +++++++++++++++++++++ lib/spack/spack/solver/old_concretizer.lp | 282 + 4 files changed, 11713 insertions(+), 1 deletion(-) create mode 100644 lib/spack/spack/solver/blis.lp create mode 100644 lib/spack/spack/solver/hdf5.lp create mode 100644 lib/spack/spack/solver/old_concretizer.lp diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index fa061756f0e..b18acb20942 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -5,7 +5,7 @@ #: major, minor, patch version for Spack, in a tuple -spack_version_info = (0, 13, 4) +spack_version_info = (0, 14, 0) #: String containing Spack version joined with .'s spack_version = '.'.join(str(v) for v in spack_version_info) diff --git a/lib/spack/spack/solver/blis.lp b/lib/spack/spack/solver/blis.lp new file mode 100644 index 00000000000..15366e132a5 --- /dev/null +++ b/lib/spack/spack/solver/blis.lp @@ -0,0 +1,2126 @@ +%============================================================================= +% Generate +%============================================================================= + +%----------------------------------------------------------------------------- +% Environments +%----------------------------------------------------------------------------- +% +% Nodes in the concretized graph are identified by (Package, Env) -- +% where available environments come from hardware.yaml, and which +% environment a node is built for depends on whether it is a build +% dependency or a link/run/test dependency. +% + + +%----------------------------------------------------------------------------- +% Version semantics +%----------------------------------------------------------------------------- + +% versions are declared w/priority -- declared with priority implies declared +version_declared(Package, Version) :- version_declared(Package, Version, _). + +% Every node in the graph has exactly one version +1 { version(Package, Version) : version_possible(Package, Version) } 1 + :- node(Package). + +% If a version is declared but conflicted, it's not possible. +version_possible(Package, Version) + :- version_declared(Package, Version), not version_conflict(Package, Version). + +version_weight(Package, Version, Weight) + :- version(Package, Version), version_declared(Package, Version, Weight). + +#defined version_conflict/2. + +%----------------------------------------------------------------------------- +% Dependency semantics +%----------------------------------------------------------------------------- +% Dependencies of any type imply that one package "depends on" another +depends_on(Package, Dependency) :- depends_on(Package, Dependency, _). + +% declared dependencies are real if they're not virtual +depends_on(Package, Dependency, Type) + :- declared_dependency(Package, Dependency, Type), not virtual(Dependency), + node(Package). + +% if you declare a dependency on a virtual, you depend on one of its providers +1 { + depends_on(Package, Provider, Type) + : provides_virtual(Provider, Virtual) +} 1 + :- declared_dependency(Package, Virtual, Type), + virtual(Virtual), + node(Package). + +% if a virtual was required by some root spec, one provider is in the DAG +1 { node(Package) : provides_virtual(Package, Virtual) } 1 + :- virtual_node(Virtual). + +% for any virtual, there can be at most one provider in the DAG +provider(Package, Virtual) + :- node(Package), provides_virtual(Package, Virtual). +0 { provider(Package, Virtual) : node(Package) } 1 :- virtual(Virtual). + +% give dependents the virtuals they want +provider_weight(Dependency, Weight) + :- virtual(Virtual), depends_on(Package, Dependency), + provider(Dependency, Virtual), + pkg_provider_preference(Package, Virtual, Dependency, Weight). +provider_weight(Dependency, Weight) + :- virtual(Virtual), depends_on(Package, Dependency), + provider(Dependency, Virtual), + not pkg_provider_preference(Package, Virtual, Dependency, _), + default_provider_preference(Virtual, Dependency, Weight). + +% if there's no preference for something, it costs 100 to discourage its +% use with minimization +provider_weight(Dependency, 100) + :- virtual(Virtual), + provider(Dependency, Virtual), + depends_on(Package, Dependency), + not pkg_provider_preference(Package, Virtual, Dependency, _), + not default_provider_preference(Virtual, Dependency, _). + +% all nodes must be reachable from some root +needed(Package) :- root(Package), node(Package). +needed(Dependency) :- root(Package), depends_on(Package, Dependency). +needed(Dependency) + :- needed(Package), depends_on(Package, Dependency), node(Package). +:- node(Package), not needed(Package). + +% real dependencies imply new nodes. +node(Dependency) :- node(Package), depends_on(Package, Dependency). + +% do not warn if generated program contains none of these. +#defined depends_on/3. +#defined declared_dependency/3. +#defined virtual/1. +#defined virtual_node/1. +#defined provides_virtual/2. +#defined pkg_provider_preference/4. +#defined default_provider_preference/3. +#defined root/1. + +%----------------------------------------------------------------------------- +% Variant semantics +%----------------------------------------------------------------------------- +% one variant value for single-valued variants. +1 { + variant_value(Package, Variant, Value) + : variant_possible_value(Package, Variant, Value) +} 1 + :- node(Package), + variant(Package, Variant), + variant_single_value(Package, Variant). + +% at least one variant value for multi-valued variants. +1 { + variant_value(Package, Variant, Value) + : variant_possible_value(Package, Variant, Value) +} + :- node(Package), + variant(Package, Variant), + not variant_single_value(Package, Variant). + +% if a variant is set to anything, it is considered 'set'. +variant_set(Package, Variant) :- variant_set(Package, Variant, _). + +% variant_set is an explicitly set variant value. If it's not 'set', +% we revert to the default value. If it is set, we force the set value +variant_value(Package, Variant, Value) + :- node(Package), + variant(Package, Variant), + variant_set(Package, Variant, Value). + +% prefer default values. +variant_not_default(Package, Variant, Value, 1) + :- variant_value(Package, Variant, Value), + not variant_default_value(Package, Variant, Value), + node(Package). + +variant_not_default(Package, Variant, Value, 0) + :- variant_value(Package, Variant, Value), + variant_default_value(Package, Variant, Value), + node(Package). + +% suppress wranings about this atom being unset. It's only set if some +% spec or some package sets it, and without this, clingo will give +% warnings like 'info: atom does not occur in any rule head'. +#defined variant/2. +#defined variant_set/3. +#defined variant_single_value/2. +#defined variant_default_value/3. +#defined variant_possible_value/3. + +%----------------------------------------------------------------------------- +% Platform/OS semantics +%----------------------------------------------------------------------------- +% one platform, os per node +% TODO: convert these to use optimization, like targets. +1 { node_platform(Package, Platform) : node_platform(Packagee, Platform) } 1 + :- node(Package). +1 { node_os(Package, OS) : node_os(Package, OS) } 1 :- node(Package). + +% arch fields for pkg P are set if set to anything +node_platform_set(Package) :- node_platform_set(Package, _). +node_os_set(Package) :- node_os_set(Package, _). + +% if no platform/os is set, fall back to the defaults +node_platform(Package, Platform) + :- node(Package), + not node_platform_set(Package), + node_platform_default(Platform). +node_os(Package, OS) + :- node(Package), not node_os_set(Package), node_os_default(OS). + +% setting os/platform on a node is a hard constraint +node_platform(Package, Platform) + :- node(Package), node_platform_set(Package, Platform). +node_os(Package, OS) :- node(Package), node_os_set(Package, OS). + +% avoid info warnings (see variants) +#defined node_platform_set/2. +#defined node_os_set/2. + +%----------------------------------------------------------------------------- +% Target semantics +%----------------------------------------------------------------------------- +% one target per node -- optimization will pick the "best" one +1 { node_target(Package, Target) : target(Target) } 1 :- node(Package). + +% can't use targets on node if the compiler for the node doesn't support them +:- node_target(Package, Target), + not compiler_supports_target(Compiler, Version, Target), + node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, Version). + +% if a target is set explicitly, respect it +node_target(Package, Target) + :- node(Package), node_target_set(Package, Target). + +% each node has the weight of its assigned target +node_target_weight(Package, Weight) + :- node(Package), node_target(Package, Target), target_weight(Target, Weight). + +#defined node_target_set/2. + +%----------------------------------------------------------------------------- +% Compiler semantics +%----------------------------------------------------------------------------- + +% one compiler per node +1 { node_compiler(Package, Compiler) : compiler(Compiler) } 1 :- node(Package). +1 { node_compiler_version(Package, Compiler, Version) + : compiler_version(Compiler, Version) } 1 :- node(Package). +1 { compiler_weight(Package, Weight) : compiler_weight(Package, Weight) } 1 + :- node(Package). + +% dependencies imply we should try to match hard compiler constraints +% todo: look at what to do about intersecting constraints here. we'd +% ideally go with the "lowest" pref in the DAG +node_compiler_match_pref(Package, Compiler) + :- node_compiler_hard(Package, Compiler). +node_compiler_match_pref(Dependency, Compiler) + :- depends_on(Package, Dependency), + node_compiler_match_pref(Package, Compiler), + not node_compiler_hard(Dependency, _). +compiler_match(Package, 1) + :- node_compiler(Package, Compiler), + node_compiler_match_pref(Package, Compiler). + +node_compiler_version_match_pref(Package, Compiler, V) + :- node_compiler_version_hard(Package, Compiler, V). +node_compiler_version_match_pref(Dependency, Compiler, V) + :- depends_on(Package, Dependency), + node_compiler_version_match_pref(Package, Compiler, V), + not node_compiler_version_hard(Dependency, Compiler, _). +compiler_version_match(Package, 1) + :- node_compiler_version(Package, Compiler, V), + node_compiler_version_match_pref(Package, Compiler, V). + +#defined node_compiler_hard/2. +#defined node_compiler_version_hard/3. + +% compilers weighted by preference acccording to packages.yaml +compiler_weight(Package, Weight) + :- node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, V), + node_compiler_preference(Package, Compiler, V, Weight). +compiler_weight(Package, Weight) + :- node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, V), + not node_compiler_preference(Package, Compiler, _, _), + default_compiler_preference(Compiler, V, Weight). +compiler_weight(Package, 100) + :- node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, Version), + not node_compiler_preference(Package, Compiler, _, _), + not default_compiler_preference(Compiler, _, _). + +#defined node_compiler_preference/4. +#defined default_compiler_preference/3. + +%----------------------------------------------------------------------------- +% Compiler flags +%----------------------------------------------------------------------------- +% propagate flags when compilers match +inherit_flags(Package, Dependency) + :- depends_on(Package, Dependency), + node_compiler(Package, Compiler), + node_compiler(Dependency, Compiler), + compiler(Compiler), flag_type(FlagType). +node_flag_inherited(Dependency, FlagType, Flag) + :- node_flag_set(Package, FlagType, Flag), inherit_flags(Package, Dependency). +node_flag_inherited(Dependency, FlagType, Flag) + :- node_flag_inherited(Package, FlagType, Flag), + inherit_flags(Package, Dependency). + +% node with flags set to anythingg is "set" +node_flag_set(Package) :- node_flag_set(Package, _, _). + +% remember where flags came from +node_flag_source(Package, Package) :- node_flag_set(Package). +node_flag_source(Dependency, Q) + :- node_flag_source(Package, Q), inherit_flags(Package, Dependency). + +% compiler flags from compilers.yaml are put on nodes if compiler matches +node_flag(Package, FlagType, Flag), +node_flag_compiler_default(Package) + :- not node_flag_set(Package), + compiler_version_flag(Compiler, Version, FlagType, Flag), + node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, Version), + flag_type(FlagType), + compiler(Compiler), + compiler_version(Compiler, Version). + +% if a flag is set to something or inherited, it's included +node_flag(Package, FlagType, Flag) :- node_flag_set(Package, FlagType, Flag). +node_flag(Package, FlagType, Flag) + :- node_flag_inherited(Package, FlagType, Flag). + +% if no node flags are set for a type, there are no flags. +no_flags(Package, FlagType) + :- not node_flag(Package, FlagType, _), node(Package), flag_type(FlagType). + +#defined compiler_version_flag/4. +#defined node_flag/3. +#defined node_flag_set/3. + +%----------------------------------------------------------------------------- +% How to optimize the spec (high to low priority) +%----------------------------------------------------------------------------- +% weight root preferences higher +% +% TODO: how best to deal with this issue? It's not clear how best to +% weight all the constraints. Without this root preference, `spack solve +% hdf5` will pick mpich instead of openmpi, even if openmpi is the +% preferred provider, because openmpi has a version constraint on hwloc. +% It ends up choosing between settling for an old version of hwloc, or +% picking the second-best provider. This workaround weights root +% preferences higher so that hdf5's prefs are more important, but it's +% not clear this is a general solution. It would be nice to weight by +% distance to root, but that seems to slow down the solve a lot. +% +% One option is to make preferences hard constraints. Or maybe we need +% to look more closely at where a constraint came from and factor that +% into our weights. e.g., a non-default variant resulting from a version +% constraint counts like a version constraint. Needs more thought later. +% +root(Package, 2) :- root(Package), node(Package). +root(Dependency, 1) :- not root(Dependency), node(Dependency). + +% prefer default variants +#minimize { + Weight*R@10,Package,Variant,Value + : variant_not_default(Package, Variant, Value, Weight), root(Package, R) +}. + +% pick most preferred virtual providers +#minimize{ + Weight*R@9,Provider : provider_weight(Provider, Weight), root(Package, R) +}. + +% prefer more recent versions. +#minimize{ + Weight@8,Package,Version : version_weight(Package, Version, Weight) +}. + +% compiler preferences +#maximize{ Weight@7,Package : compiler_match(Package, Weight) }. +#minimize{ Weight@6,Package : compiler_weight(Package, Weight) }. + +% fastest target for node + +% TODO: if these are slightly different by compiler (e.g., skylake is +% best, gcc supports skylake and broadweell, clang's best is haswell) +% things seem to get really slow. +#minimize{ Weight@5,Package : node_target_weight(Package, Weight) }. + +%============================================================================ +% General Constraints +%============================================================================ + +%---------------------------------------------------------------------------- +% Available compilers +%---------------------------------------------------------------------------- +compiler("clang"). +compiler_version("clang", "10.0.0-apple") :- compiler("clang"). +compiler("gcc"). +compiler_version("gcc", "8.2.0") :- compiler("gcc"). + +%---------------------------------------------------------------------------- +% Default compiler preferences +%---------------------------------------------------------------------------- +default_compiler_preference("clang", "10.0.0-apple", 0). +default_compiler_preference("gcc", "8.2.0", 1). + +%---------------------------------------------------------------------------- +% Default architecture +%---------------------------------------------------------------------------- +node_platform_default("darwin"). +node_os_default("mojave"). +node_target_default("skylake"). + +%---------------------------------------------------------------------------- +% Target compatibility +%---------------------------------------------------------------------------- +compiler_supports_target("gcc", "8.2.0", "skylake"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "broadwell"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "haswell"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "ivybridge"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "sandybridge"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "westmere"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "nehalem"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "core2"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "nocona"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "skylake"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "broadwell"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "haswell"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "ivybridge"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "sandybridge"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "westmere"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "nehalem"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "core2"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "nocona"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +target("skylake"). +target_family("skylake", "x86_64"). +target_parent("skylake", "broadwell"). +target_weight("skylake", 0). + +target("broadwell"). +target_family("broadwell", "x86_64"). +target_parent("broadwell", "haswell"). +target_weight("broadwell", 1). + +target("haswell"). +target_family("haswell", "x86_64"). +target_parent("haswell", "ivybridge"). +target_weight("haswell", 2). + +target("ivybridge"). +target_family("ivybridge", "x86_64"). +target_parent("ivybridge", "sandybridge"). +target_weight("ivybridge", 3). + +target("sandybridge"). +target_family("sandybridge", "x86_64"). +target_parent("sandybridge", "westmere"). +target_weight("sandybridge", 4). + +target("westmere"). +target_family("westmere", "x86_64"). +target_parent("westmere", "nehalem"). +target_weight("westmere", 5). + +target("nehalem"). +target_family("nehalem", "x86_64"). +target_parent("nehalem", "core2"). +target_weight("nehalem", 6). + +target("core2"). +target_family("core2", "x86_64"). +target_parent("core2", "nocona"). +target_weight("core2", 7). + +target("nocona"). +target_family("nocona", "x86_64"). +target_parent("nocona", "x86_64"). +target_weight("nocona", 8). + +target("x86_64"). +target_family("x86_64", "x86_64"). +target_weight("x86_64", 9). + + +%---------------------------------------------------------------------------- +% Virtual providers +%---------------------------------------------------------------------------- +virtual("pkgconfig"). +provides_virtual("pkg-config", "pkgconfig"). +provides_virtual("pkgconf", "pkgconfig"). + +%---------------------------------------------------------------------------- +% Default virtual providers +%---------------------------------------------------------------------------- +default_provider_preference("pkgconfig", "pkgconf", 0). +default_provider_preference("pkgconfig", "pkg-config", 1). + +%---------------------------------------------------------------------------- +% Compiler flag defaults +%---------------------------------------------------------------------------- +flag_type("cflags"). +flag_type("cxxflags"). +flag_type("fflags"). +flag_type("ldflags"). +flag_type("ldlibs"). +flag_type("cppflags"). + + +%============================================================================ +% Package Constraints +%============================================================================ + +%---------------------------------------------------------------------------- +% Package: autoconf +%---------------------------------------------------------------------------- +version_declared("autoconf", "2.69", 0). +version_declared("autoconf", "2.62", 1). +version_declared("autoconf", "2.59", 2). +version_declared("autoconf", "2.13", 3). + +declared_dependency("autoconf", "m4", "build"). +declared_dependency("autoconf", "m4", "run"). +node("m4") :- depends_on("autoconf", "m4"), node("autoconf"). + +declared_dependency("autoconf", "perl", "build"). +declared_dependency("autoconf", "perl", "run"). +node("perl") :- depends_on("autoconf", "perl"), node("autoconf"). + + +%---------------------------------------------------------------------------- +% Package: automake +%---------------------------------------------------------------------------- +version_declared("automake", "1.16.1", 0). +version_declared("automake", "1.15.1", 1). +version_declared("automake", "1.15", 2). +version_declared("automake", "1.14.1", 3). +version_declared("automake", "1.13.4", 4). +version_declared("automake", "1.11.6", 5). + +declared_dependency("automake", "autoconf", "build"). +node("autoconf") :- depends_on("automake", "autoconf"), node("automake"). + +declared_dependency("automake", "perl", "build"). +declared_dependency("automake", "perl", "run"). +node("perl") :- depends_on("automake", "perl"), node("automake"). + + +%---------------------------------------------------------------------------- +% Package: bdftopcf +%---------------------------------------------------------------------------- +version_declared("bdftopcf", "1.0.5", 0). + +declared_dependency("bdftopcf", "fontsproto", "build"). +node("fontsproto") :- depends_on("bdftopcf", "fontsproto"), node("bdftopcf"). + +declared_dependency("bdftopcf", "libxfont", "build"). +declared_dependency("bdftopcf", "libxfont", "link"). +node("libxfont") :- depends_on("bdftopcf", "libxfont"), node("bdftopcf"). + +declared_dependency("bdftopcf", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("bdftopcf", "pkgconfig"), node("bdftopcf"). + +declared_dependency("bdftopcf", "util-macros", "build"). +node("util-macros") :- depends_on("bdftopcf", "util-macros"), node("bdftopcf"). + +declared_dependency("bdftopcf", "xproto", "build"). +node("xproto") :- depends_on("bdftopcf", "xproto"), node("bdftopcf"). + + +%---------------------------------------------------------------------------- +% Package: blis +%---------------------------------------------------------------------------- +version_declared("blis", "0.6.1", 0). +version_declared("blis", "0.6.0", 1). +version_declared("blis", "0.5.0", 2). +version_declared("blis", "0.4.0", 3). +version_declared("blis", "0.3.2", 4). +version_declared("blis", "0.3.1", 5). +version_declared("blis", "0.3.0", 6). +version_declared("blis", "0.2.2", 7). +version_declared("blis", "master", 8). + +variant("blis", "blas"). +variant_single_value("blis", "blas"). +variant_default_value("blis", "blas", "True"). +variant_possible_value("blis", "blas", "False"). +variant_possible_value("blis", "blas", "True"). + +variant("blis", "cblas"). +variant_single_value("blis", "cblas"). +variant_default_value("blis", "cblas", "True"). +variant_possible_value("blis", "cblas", "False"). +variant_possible_value("blis", "cblas", "True"). + +variant("blis", "shared"). +variant_single_value("blis", "shared"). +variant_default_value("blis", "shared", "True"). +variant_possible_value("blis", "shared", "False"). +variant_possible_value("blis", "shared", "True"). + +variant("blis", "static"). +variant_single_value("blis", "static"). +variant_default_value("blis", "static", "True"). +variant_possible_value("blis", "static", "False"). +variant_possible_value("blis", "static", "True"). + +variant("blis", "threads"). +variant_single_value("blis", "threads"). +variant_default_value("blis", "threads", "none"). +variant_possible_value("blis", "threads", "none"). +variant_possible_value("blis", "threads", "openmp"). +variant_possible_value("blis", "threads", "pthreads"). + +declared_dependency("blis", "python", "build"). +declared_dependency("blis", "python", "run"). +node("python") :- depends_on("blis", "python"), node("blis"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("blis", "python"), node("blis"). + + +%---------------------------------------------------------------------------- +% Package: bzip2 +%---------------------------------------------------------------------------- +version_declared("bzip2", "1.0.8", 0). +version_declared("bzip2", "1.0.7", 1). +version_declared("bzip2", "1.0.6", 2). + +variant("bzip2", "shared"). +variant_single_value("bzip2", "shared"). +variant_default_value("bzip2", "shared", "True"). +variant_possible_value("bzip2", "shared", "False"). +variant_possible_value("bzip2", "shared", "True"). + +declared_dependency("bzip2", "diffutils", "build"). +node("diffutils") :- depends_on("bzip2", "diffutils"), node("bzip2"). + + +%---------------------------------------------------------------------------- +% Package: diffutils +%---------------------------------------------------------------------------- +version_declared("diffutils", "3.7", 0). +version_declared("diffutils", "3.6", 1). + +declared_dependency("diffutils", "libiconv", "build"). +declared_dependency("diffutils", "libiconv", "link"). +node("libiconv") :- depends_on("diffutils", "libiconv"), node("diffutils"). + + +%---------------------------------------------------------------------------- +% Package: expat +%---------------------------------------------------------------------------- +version_declared("expat", "2.2.9", 0). +version_declared("expat", "2.2.5", 1). +version_declared("expat", "2.2.2", 2). +version_declared("expat", "2.2.0", 3). + +variant("expat", "libbsd"). +variant_single_value("expat", "libbsd"). +variant_default_value("expat", "libbsd", "False"). +variant_possible_value("expat", "libbsd", "False"). +variant_possible_value("expat", "libbsd", "True"). + +declared_dependency("expat", "libbsd", "build") :- node("expat"), 1 { version("expat", "2.2.2"); version("expat", "2.2.5"); version("expat", "2.2.9") } 1, variant_value("expat", "libbsd", "True"). +declared_dependency("expat", "libbsd", "link") :- node("expat"), 1 { version("expat", "2.2.2"); version("expat", "2.2.5"); version("expat", "2.2.9") } 1, variant_value("expat", "libbsd", "True"). +node("libbsd") :- depends_on("expat", "libbsd"), node("expat"), 1 { version("expat", "2.2.2"); version("expat", "2.2.5"); version("expat", "2.2.9") } 1, variant_value("expat", "libbsd", "True"). + + +%---------------------------------------------------------------------------- +% Package: font-util +%---------------------------------------------------------------------------- +version_declared("font-util", "1.3.2", 0). +version_declared("font-util", "1.3.1", 1). + +variant("font-util", "fonts"). +not variant_single_value("font-util", "fonts"). +variant_default_value("font-util", "fonts", "encodings"). +variant_default_value("font-util", "fonts", "font-adobe-100dpi"). +variant_default_value("font-util", "fonts", "font-adobe-75dpi"). +variant_default_value("font-util", "fonts", "font-adobe-utopia-100dpi"). +variant_default_value("font-util", "fonts", "font-adobe-utopia-75dpi"). +variant_default_value("font-util", "fonts", "font-adobe-utopia-type1"). +variant_default_value("font-util", "fonts", "font-alias"). +variant_default_value("font-util", "fonts", "font-arabic-misc"). +variant_default_value("font-util", "fonts", "font-bh-100dpi"). +variant_default_value("font-util", "fonts", "font-bh-75dpi"). +variant_default_value("font-util", "fonts", "font-bh-lucidatypewriter-100dpi"). +variant_default_value("font-util", "fonts", "font-bh-lucidatypewriter-75dpi"). +variant_default_value("font-util", "fonts", "font-bh-ttf"). +variant_default_value("font-util", "fonts", "font-bh-type1"). +variant_default_value("font-util", "fonts", "font-bitstream-100dpi"). +variant_default_value("font-util", "fonts", "font-bitstream-75dpi"). +variant_default_value("font-util", "fonts", "font-bitstream-speedo"). +variant_default_value("font-util", "fonts", "font-bitstream-type1"). +variant_default_value("font-util", "fonts", "font-cronyx-cyrillic"). +variant_default_value("font-util", "fonts", "font-cursor-misc"). +variant_default_value("font-util", "fonts", "font-daewoo-misc"). +variant_default_value("font-util", "fonts", "font-dec-misc"). +variant_default_value("font-util", "fonts", "font-ibm-type1"). +variant_default_value("font-util", "fonts", "font-isas-misc"). +variant_default_value("font-util", "fonts", "font-jis-misc"). +variant_default_value("font-util", "fonts", "font-micro-misc"). +variant_default_value("font-util", "fonts", "font-misc-cyrillic"). +variant_default_value("font-util", "fonts", "font-misc-ethiopic"). +variant_default_value("font-util", "fonts", "font-misc-meltho"). +variant_default_value("font-util", "fonts", "font-misc-misc"). +variant_default_value("font-util", "fonts", "font-mutt-misc"). +variant_default_value("font-util", "fonts", "font-schumacher-misc"). +variant_default_value("font-util", "fonts", "font-screen-cyrillic"). +variant_default_value("font-util", "fonts", "font-sun-misc"). +variant_default_value("font-util", "fonts", "font-winitzki-cyrillic"). +variant_default_value("font-util", "fonts", "font-xfree86-type1"). +variant_possible_value("font-util", "fonts", "encodings"). +variant_possible_value("font-util", "fonts", "font-adobe-100dpi"). +variant_possible_value("font-util", "fonts", "font-adobe-75dpi"). +variant_possible_value("font-util", "fonts", "font-adobe-utopia-100dpi"). +variant_possible_value("font-util", "fonts", "font-adobe-utopia-75dpi"). +variant_possible_value("font-util", "fonts", "font-adobe-utopia-type1"). +variant_possible_value("font-util", "fonts", "font-alias"). +variant_possible_value("font-util", "fonts", "font-arabic-misc"). +variant_possible_value("font-util", "fonts", "font-bh-100dpi"). +variant_possible_value("font-util", "fonts", "font-bh-75dpi"). +variant_possible_value("font-util", "fonts", "font-bh-lucidatypewriter-100dpi"). +variant_possible_value("font-util", "fonts", "font-bh-lucidatypewriter-75dpi"). +variant_possible_value("font-util", "fonts", "font-bh-ttf"). +variant_possible_value("font-util", "fonts", "font-bh-type1"). +variant_possible_value("font-util", "fonts", "font-bitstream-100dpi"). +variant_possible_value("font-util", "fonts", "font-bitstream-75dpi"). +variant_possible_value("font-util", "fonts", "font-bitstream-speedo"). +variant_possible_value("font-util", "fonts", "font-bitstream-type1"). +variant_possible_value("font-util", "fonts", "font-cronyx-cyrillic"). +variant_possible_value("font-util", "fonts", "font-cursor-misc"). +variant_possible_value("font-util", "fonts", "font-daewoo-misc"). +variant_possible_value("font-util", "fonts", "font-dec-misc"). +variant_possible_value("font-util", "fonts", "font-ibm-type1"). +variant_possible_value("font-util", "fonts", "font-isas-misc"). +variant_possible_value("font-util", "fonts", "font-jis-misc"). +variant_possible_value("font-util", "fonts", "font-micro-misc"). +variant_possible_value("font-util", "fonts", "font-misc-cyrillic"). +variant_possible_value("font-util", "fonts", "font-misc-ethiopic"). +variant_possible_value("font-util", "fonts", "font-misc-meltho"). +variant_possible_value("font-util", "fonts", "font-misc-misc"). +variant_possible_value("font-util", "fonts", "font-mutt-misc"). +variant_possible_value("font-util", "fonts", "font-schumacher-misc"). +variant_possible_value("font-util", "fonts", "font-screen-cyrillic"). +variant_possible_value("font-util", "fonts", "font-sun-misc"). +variant_possible_value("font-util", "fonts", "font-winitzki-cyrillic"). +variant_possible_value("font-util", "fonts", "font-xfree86-type1"). + +declared_dependency("font-util", "autoconf", "build"). +node("autoconf") :- depends_on("font-util", "autoconf"), node("font-util"). + +declared_dependency("font-util", "automake", "build"). +node("automake") :- depends_on("font-util", "automake"), node("font-util"). + +declared_dependency("font-util", "bdftopcf", "build"). +node("bdftopcf") :- depends_on("font-util", "bdftopcf"), node("font-util"). + +declared_dependency("font-util", "mkfontdir", "build"). +node("mkfontdir") :- depends_on("font-util", "mkfontdir"), node("font-util"). + +declared_dependency("font-util", "mkfontscale", "build"). +node("mkfontscale") :- depends_on("font-util", "mkfontscale"), node("font-util"). + +declared_dependency("font-util", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("font-util", "pkgconfig"), node("font-util"). + +declared_dependency("font-util", "util-macros", "build"). +node("util-macros") :- depends_on("font-util", "util-macros"), node("font-util"). + + +%---------------------------------------------------------------------------- +% Package: fontconfig +%---------------------------------------------------------------------------- +version_declared("fontconfig", "2.12.3", 0). +version_declared("fontconfig", "2.12.1", 1). +version_declared("fontconfig", "2.11.1", 2). + +declared_dependency("fontconfig", "font-util", "build"). +declared_dependency("fontconfig", "font-util", "link"). +node("font-util") :- depends_on("fontconfig", "font-util"), node("fontconfig"). + +declared_dependency("fontconfig", "freetype", "build"). +declared_dependency("fontconfig", "freetype", "link"). +node("freetype") :- depends_on("fontconfig", "freetype"), node("fontconfig"). + +declared_dependency("fontconfig", "gperf", "build") :- node("fontconfig"), 1 { version("fontconfig", "2.12.3") } 1. +node("gperf") :- depends_on("fontconfig", "gperf"), node("fontconfig"), 1 { version("fontconfig", "2.12.3") } 1. + +declared_dependency("fontconfig", "libxml2", "build"). +declared_dependency("fontconfig", "libxml2", "link"). +node("libxml2") :- depends_on("fontconfig", "libxml2"), node("fontconfig"). + +declared_dependency("fontconfig", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("fontconfig", "pkgconfig"), node("fontconfig"). + + +%---------------------------------------------------------------------------- +% Package: fontsproto +%---------------------------------------------------------------------------- +version_declared("fontsproto", "2.1.3", 0). + +declared_dependency("fontsproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("fontsproto", "pkgconfig"), node("fontsproto"). + +declared_dependency("fontsproto", "util-macros", "build"). +node("util-macros") :- depends_on("fontsproto", "util-macros"), node("fontsproto"). + + +%---------------------------------------------------------------------------- +% Package: freetype +%---------------------------------------------------------------------------- +version_declared("freetype", "2.10.1", 0). +version_declared("freetype", "2.9.1", 1). +version_declared("freetype", "2.7.1", 2). +version_declared("freetype", "2.7", 3). +version_declared("freetype", "2.5.3", 4). + +declared_dependency("freetype", "bzip2", "build"). +declared_dependency("freetype", "bzip2", "link"). +node("bzip2") :- depends_on("freetype", "bzip2"), node("freetype"). + +declared_dependency("freetype", "libpng", "build"). +declared_dependency("freetype", "libpng", "link"). +node("libpng") :- depends_on("freetype", "libpng"), node("freetype"). + +declared_dependency("freetype", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("freetype", "pkgconfig"), node("freetype"). + + +%---------------------------------------------------------------------------- +% Package: gdbm +%---------------------------------------------------------------------------- +version_declared("gdbm", "1.18.1", 0). +version_declared("gdbm", "1.14.1", 1). +version_declared("gdbm", "1.13", 2). +version_declared("gdbm", "1.12", 3). +version_declared("gdbm", "1.11", 4). +version_declared("gdbm", "1.10", 5). +version_declared("gdbm", "1.9.1", 6). +version_declared("gdbm", "1.9", 7). + +declared_dependency("gdbm", "readline", "build"). +declared_dependency("gdbm", "readline", "link"). +node("readline") :- depends_on("gdbm", "readline"), node("gdbm"). + + +%---------------------------------------------------------------------------- +% Package: gettext +%---------------------------------------------------------------------------- +version_declared("gettext", "0.20.1", 0). +version_declared("gettext", "0.19.8.1", 1). +version_declared("gettext", "0.19.7", 2). + +variant("gettext", "bzip2"). +variant_single_value("gettext", "bzip2"). +variant_default_value("gettext", "bzip2", "True"). +variant_possible_value("gettext", "bzip2", "False"). +variant_possible_value("gettext", "bzip2", "True"). + +variant("gettext", "curses"). +variant_single_value("gettext", "curses"). +variant_default_value("gettext", "curses", "True"). +variant_possible_value("gettext", "curses", "False"). +variant_possible_value("gettext", "curses", "True"). + +variant("gettext", "git"). +variant_single_value("gettext", "git"). +variant_default_value("gettext", "git", "True"). +variant_possible_value("gettext", "git", "False"). +variant_possible_value("gettext", "git", "True"). + +variant("gettext", "libunistring"). +variant_single_value("gettext", "libunistring"). +variant_default_value("gettext", "libunistring", "False"). +variant_possible_value("gettext", "libunistring", "False"). +variant_possible_value("gettext", "libunistring", "True"). + +variant("gettext", "libxml2"). +variant_single_value("gettext", "libxml2"). +variant_default_value("gettext", "libxml2", "True"). +variant_possible_value("gettext", "libxml2", "False"). +variant_possible_value("gettext", "libxml2", "True"). + +variant("gettext", "tar"). +variant_single_value("gettext", "tar"). +variant_default_value("gettext", "tar", "True"). +variant_possible_value("gettext", "tar", "False"). +variant_possible_value("gettext", "tar", "True"). + +variant("gettext", "xz"). +variant_single_value("gettext", "xz"). +variant_default_value("gettext", "xz", "True"). +variant_possible_value("gettext", "xz", "False"). +variant_possible_value("gettext", "xz", "True"). + +declared_dependency("gettext", "bzip2", "build") :- node("gettext"), variant_value("gettext", "bzip2", "True"). +declared_dependency("gettext", "bzip2", "link") :- node("gettext"), variant_value("gettext", "bzip2", "True"). +node("bzip2") :- depends_on("gettext", "bzip2"), node("gettext"), variant_value("gettext", "bzip2", "True"). + +declared_dependency("gettext", "libunistring", "build") :- node("gettext"), variant_value("gettext", "libunistring", "True"). +declared_dependency("gettext", "libunistring", "link") :- node("gettext"), variant_value("gettext", "libunistring", "True"). +node("libunistring") :- depends_on("gettext", "libunistring"), node("gettext"), variant_value("gettext", "libunistring", "True"). + +declared_dependency("gettext", "libxml2", "build") :- node("gettext"), variant_value("gettext", "libxml2", "True"). +declared_dependency("gettext", "libxml2", "link") :- node("gettext"), variant_value("gettext", "libxml2", "True"). +node("libxml2") :- depends_on("gettext", "libxml2"), node("gettext"), variant_value("gettext", "libxml2", "True"). + +declared_dependency("gettext", "ncurses", "build") :- node("gettext"), variant_value("gettext", "curses", "True"). +declared_dependency("gettext", "ncurses", "link") :- node("gettext"), variant_value("gettext", "curses", "True"). +node("ncurses") :- depends_on("gettext", "ncurses"), node("gettext"), variant_value("gettext", "curses", "True"). + +declared_dependency("gettext", "tar", "build") :- node("gettext"), variant_value("gettext", "tar", "True"). +declared_dependency("gettext", "tar", "link") :- node("gettext"), variant_value("gettext", "tar", "True"). +node("tar") :- depends_on("gettext", "tar"), node("gettext"), variant_value("gettext", "tar", "True"). + +declared_dependency("gettext", "xz", "build") :- node("gettext"), variant_value("gettext", "xz", "True"). +declared_dependency("gettext", "xz", "link") :- node("gettext"), variant_value("gettext", "xz", "True"). +declared_dependency("gettext", "xz", "run") :- node("gettext"), variant_value("gettext", "xz", "True"). +node("xz") :- depends_on("gettext", "xz"), node("gettext"), variant_value("gettext", "xz", "True"). + + +%---------------------------------------------------------------------------- +% Package: gperf +%---------------------------------------------------------------------------- +version_declared("gperf", "3.0.4", 0). + + +%---------------------------------------------------------------------------- +% Package: help2man +%---------------------------------------------------------------------------- +version_declared("help2man", "1.47.11", 0). +version_declared("help2man", "1.47.8", 1). +version_declared("help2man", "1.47.4", 2). + +declared_dependency("help2man", "gettext", "build"). +node("gettext") :- depends_on("help2man", "gettext"), node("help2man"). + +declared_dependency("help2man", "perl", "build"). +declared_dependency("help2man", "perl", "run"). +node("perl") :- depends_on("help2man", "perl"), node("help2man"). + + +%---------------------------------------------------------------------------- +% Package: inputproto +%---------------------------------------------------------------------------- +version_declared("inputproto", "2.3.2", 0). + +declared_dependency("inputproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("inputproto", "pkgconfig"), node("inputproto"). + +declared_dependency("inputproto", "util-macros", "build"). +node("util-macros") :- depends_on("inputproto", "util-macros"), node("inputproto"). + + +%---------------------------------------------------------------------------- +% Package: kbproto +%---------------------------------------------------------------------------- +version_declared("kbproto", "1.0.7", 0). + +declared_dependency("kbproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("kbproto", "pkgconfig"), node("kbproto"). + +declared_dependency("kbproto", "util-macros", "build"). +node("util-macros") :- depends_on("kbproto", "util-macros"), node("kbproto"). + + +%---------------------------------------------------------------------------- +% Package: libbsd +%---------------------------------------------------------------------------- +version_declared("libbsd", "0.10.0", 0). +version_declared("libbsd", "0.9.1", 1). +version_declared("libbsd", "0.9.0", 2). +version_declared("libbsd", "0.8.7", 3). +version_declared("libbsd", "0.8.6", 4). + + +%---------------------------------------------------------------------------- +% Package: libffi +%---------------------------------------------------------------------------- +version_declared("libffi", "3.2.1", 0). + + +%---------------------------------------------------------------------------- +% Package: libfontenc +%---------------------------------------------------------------------------- +version_declared("libfontenc", "1.1.3", 0). + +declared_dependency("libfontenc", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libfontenc", "pkgconfig"), node("libfontenc"). + +declared_dependency("libfontenc", "util-macros", "build"). +node("util-macros") :- depends_on("libfontenc", "util-macros"), node("libfontenc"). + +declared_dependency("libfontenc", "xproto", "build"). +node("xproto") :- depends_on("libfontenc", "xproto"), node("libfontenc"). + +declared_dependency("libfontenc", "zlib", "build"). +declared_dependency("libfontenc", "zlib", "link"). +node("zlib") :- depends_on("libfontenc", "zlib"), node("libfontenc"). + + +%---------------------------------------------------------------------------- +% Package: libiconv +%---------------------------------------------------------------------------- +version_declared("libiconv", "1.16", 0). +version_declared("libiconv", "1.15", 1). +version_declared("libiconv", "1.14", 2). + + +%---------------------------------------------------------------------------- +% Package: libnsl +%---------------------------------------------------------------------------- +version_declared("libnsl", "1.2.0", 0). + +declared_dependency("libnsl", "autoconf", "build"). +node("autoconf") :- depends_on("libnsl", "autoconf"), node("libnsl"). + +declared_dependency("libnsl", "automake", "build"). +node("automake") :- depends_on("libnsl", "automake"), node("libnsl"). + +declared_dependency("libnsl", "gettext", "build"). +declared_dependency("libnsl", "gettext", "link"). +node("gettext") :- depends_on("libnsl", "gettext"), node("libnsl"). + +declared_dependency("libnsl", "libtirpc", "build"). +declared_dependency("libnsl", "libtirpc", "link"). +node("libtirpc") :- depends_on("libnsl", "libtirpc"), node("libnsl"). + +declared_dependency("libnsl", "libtool", "build"). +node("libtool") :- depends_on("libnsl", "libtool"), node("libnsl"). + +declared_dependency("libnsl", "m4", "build"). +node("m4") :- depends_on("libnsl", "m4"), node("libnsl"). + +declared_dependency("libnsl", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libnsl", "pkgconfig"), node("libnsl"). + +declared_dependency("libnsl", "rpcsvc-proto", "build"). +declared_dependency("libnsl", "rpcsvc-proto", "link"). +node("rpcsvc-proto") :- depends_on("libnsl", "rpcsvc-proto"), node("libnsl"). + + +%---------------------------------------------------------------------------- +% Package: libpng +%---------------------------------------------------------------------------- +version_declared("libpng", "1.6.37", 0). +version_declared("libpng", "1.2.57", 1). + +declared_dependency("libpng", "zlib", "build"). +declared_dependency("libpng", "zlib", "link"). +node("zlib") :- depends_on("libpng", "zlib"), node("libpng"). + + +%---------------------------------------------------------------------------- +% Package: libpthread-stubs +%---------------------------------------------------------------------------- +version_declared("libpthread-stubs", "0.4", 0). +version_declared("libpthread-stubs", "0.3", 1). + + +%---------------------------------------------------------------------------- +% Package: libsigsegv +%---------------------------------------------------------------------------- +version_declared("libsigsegv", "2.12", 0). +version_declared("libsigsegv", "2.11", 1). +version_declared("libsigsegv", "2.10", 2). + + +%---------------------------------------------------------------------------- +% Package: libtirpc +%---------------------------------------------------------------------------- +version_declared("libtirpc", "1.1.4", 0). + + +%---------------------------------------------------------------------------- +% Package: libtool +%---------------------------------------------------------------------------- +version_declared("libtool", "2.4.6", 0). +version_declared("libtool", "2.4.2", 1). +version_declared("libtool", "develop", 2). + +declared_dependency("libtool", "autoconf", "build") :- node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. +node("autoconf") :- depends_on("libtool", "autoconf"), node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. + +declared_dependency("libtool", "automake", "build") :- node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. +node("automake") :- depends_on("libtool", "automake"), node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. + +declared_dependency("libtool", "help2man", "build") :- node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. +node("help2man") :- depends_on("libtool", "help2man"), node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. + +declared_dependency("libtool", "m4", "build"). +node("m4") :- depends_on("libtool", "m4"), node("libtool"). + +declared_dependency("libtool", "texinfo", "build") :- node("libtool"), 1 { version("libtool", "develop") } 1. +node("texinfo") :- depends_on("libtool", "texinfo"), node("libtool"), 1 { version("libtool", "develop") } 1. + +declared_dependency("libtool", "xz", "build") :- node("libtool"), 1 { version("libtool", "develop") } 1. +node("xz") :- depends_on("libtool", "xz"), node("libtool"), 1 { version("libtool", "develop") } 1. + + +%---------------------------------------------------------------------------- +% Package: libunistring +%---------------------------------------------------------------------------- +version_declared("libunistring", "0.9.10", 0). +version_declared("libunistring", "0.9.9", 1). +version_declared("libunistring", "0.9.8", 2). +version_declared("libunistring", "0.9.7", 3). +version_declared("libunistring", "0.9.6", 4). + +declared_dependency("libunistring", "libiconv", "build"). +declared_dependency("libunistring", "libiconv", "link"). +node("libiconv") :- depends_on("libunistring", "libiconv"), node("libunistring"). + + +%---------------------------------------------------------------------------- +% Package: libx11 +%---------------------------------------------------------------------------- +version_declared("libx11", "1.6.7", 0). +version_declared("libx11", "1.6.5", 1). +version_declared("libx11", "1.6.3", 2). + +declared_dependency("libx11", "inputproto", "build"). +node("inputproto") :- depends_on("libx11", "inputproto"), node("libx11"). + +declared_dependency("libx11", "kbproto", "build"). +declared_dependency("libx11", "kbproto", "link"). +node("kbproto") :- depends_on("libx11", "kbproto"), node("libx11"). + +declared_dependency("libx11", "libxcb", "build"). +declared_dependency("libx11", "libxcb", "link"). +node("libxcb") :- depends_on("libx11", "libxcb"), node("libx11"). + +declared_dependency("libx11", "perl", "build"). +node("perl") :- depends_on("libx11", "perl"), node("libx11"). + +declared_dependency("libx11", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libx11", "pkgconfig"), node("libx11"). + +declared_dependency("libx11", "util-macros", "build"). +node("util-macros") :- depends_on("libx11", "util-macros"), node("libx11"). + +declared_dependency("libx11", "xextproto", "build"). +declared_dependency("libx11", "xextproto", "link"). +node("xextproto") :- depends_on("libx11", "xextproto"), node("libx11"). + +declared_dependency("libx11", "xproto", "build"). +node("xproto") :- depends_on("libx11", "xproto"), node("libx11"). + +declared_dependency("libx11", "xtrans", "build"). +node("xtrans") :- depends_on("libx11", "xtrans"), node("libx11"). + + +%---------------------------------------------------------------------------- +% Package: libxau +%---------------------------------------------------------------------------- +version_declared("libxau", "1.0.8", 0). + +declared_dependency("libxau", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxau", "pkgconfig"), node("libxau"). + +declared_dependency("libxau", "util-macros", "build"). +node("util-macros") :- depends_on("libxau", "util-macros"), node("libxau"). + +declared_dependency("libxau", "xproto", "build"). +declared_dependency("libxau", "xproto", "link"). +node("xproto") :- depends_on("libxau", "xproto"), node("libxau"). + + +%---------------------------------------------------------------------------- +% Package: libxcb +%---------------------------------------------------------------------------- +version_declared("libxcb", "1.13", 0). +version_declared("libxcb", "1.12", 1). +version_declared("libxcb", "1.11.1", 2). +version_declared("libxcb", "1.11", 3). + +declared_dependency("libxcb", "libpthread-stubs", "build"). +declared_dependency("libxcb", "libpthread-stubs", "link"). +node("libpthread-stubs") :- depends_on("libxcb", "libpthread-stubs"), node("libxcb"). + +declared_dependency("libxcb", "libxau", "build"). +declared_dependency("libxcb", "libxau", "link"). +node("libxau") :- depends_on("libxcb", "libxau"), node("libxcb"). + +declared_dependency("libxcb", "libxdmcp", "build"). +declared_dependency("libxcb", "libxdmcp", "link"). +node("libxdmcp") :- depends_on("libxcb", "libxdmcp"), node("libxcb"). + +declared_dependency("libxcb", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxcb", "pkgconfig"), node("libxcb"). + +declared_dependency("libxcb", "util-macros", "build"). +node("util-macros") :- depends_on("libxcb", "util-macros"), node("libxcb"). + +declared_dependency("libxcb", "xcb-proto", "build"). +node("xcb-proto") :- depends_on("libxcb", "xcb-proto"), node("libxcb"). +declared_dependency("libxcb", "xcb-proto", "build") :- node("libxcb"), 1 { version("libxcb", "1.11"); version("libxcb", "1.11.1") } 1. +node("xcb-proto") :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.11"); version("libxcb", "1.11.1") } 1. +declared_dependency("libxcb", "xcb-proto", "build") :- node("libxcb"), 1 { version("libxcb", "1.12") } 1. +node("xcb-proto") :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.12") } 1. +1 { version("xcb-proto", "1.12"); version("xcb-proto", "1.13") } 1 :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.12") } 1. +declared_dependency("libxcb", "xcb-proto", "build") :- node("libxcb"), 1 { version("libxcb", "1.13") } 1. +node("xcb-proto") :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.13") } 1. +1 { version("xcb-proto", "1.13") } 1 :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.13") } 1. + + +%---------------------------------------------------------------------------- +% Package: libxdmcp +%---------------------------------------------------------------------------- +version_declared("libxdmcp", "1.1.2", 0). + +declared_dependency("libxdmcp", "libbsd", "build") :- node("libxdmcp"), node_platform("libxdmcp", "cray"). +declared_dependency("libxdmcp", "libbsd", "link") :- node("libxdmcp"), node_platform("libxdmcp", "cray"). +node("libbsd") :- depends_on("libxdmcp", "libbsd"), node("libxdmcp"), node_platform("libxdmcp", "cray"). +declared_dependency("libxdmcp", "libbsd", "build") :- node("libxdmcp"), node_platform("libxdmcp", "linux"). +declared_dependency("libxdmcp", "libbsd", "link") :- node("libxdmcp"), node_platform("libxdmcp", "linux"). +node("libbsd") :- depends_on("libxdmcp", "libbsd"), node("libxdmcp"), node_platform("libxdmcp", "linux"). + +declared_dependency("libxdmcp", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxdmcp", "pkgconfig"), node("libxdmcp"). + +declared_dependency("libxdmcp", "util-macros", "build"). +node("util-macros") :- depends_on("libxdmcp", "util-macros"), node("libxdmcp"). + +declared_dependency("libxdmcp", "xproto", "build"). +node("xproto") :- depends_on("libxdmcp", "xproto"), node("libxdmcp"). + + +%---------------------------------------------------------------------------- +% Package: libxext +%---------------------------------------------------------------------------- +version_declared("libxext", "1.3.3", 0). + +declared_dependency("libxext", "libx11", "build"). +declared_dependency("libxext", "libx11", "link"). +node("libx11") :- depends_on("libxext", "libx11"), node("libxext"). + +declared_dependency("libxext", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxext", "pkgconfig"), node("libxext"). + +declared_dependency("libxext", "util-macros", "build"). +node("util-macros") :- depends_on("libxext", "util-macros"), node("libxext"). + +declared_dependency("libxext", "xextproto", "build"). +node("xextproto") :- depends_on("libxext", "xextproto"), node("libxext"). + +declared_dependency("libxext", "xproto", "build"). +node("xproto") :- depends_on("libxext", "xproto"), node("libxext"). + + +%---------------------------------------------------------------------------- +% Package: libxfont +%---------------------------------------------------------------------------- +version_declared("libxfont", "1.5.2", 0). + +declared_dependency("libxfont", "fontsproto", "build"). +node("fontsproto") :- depends_on("libxfont", "fontsproto"), node("libxfont"). + +declared_dependency("libxfont", "freetype", "build"). +declared_dependency("libxfont", "freetype", "link"). +node("freetype") :- depends_on("libxfont", "freetype"), node("libxfont"). + +declared_dependency("libxfont", "libfontenc", "build"). +declared_dependency("libxfont", "libfontenc", "link"). +node("libfontenc") :- depends_on("libxfont", "libfontenc"), node("libxfont"). + +declared_dependency("libxfont", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxfont", "pkgconfig"), node("libxfont"). + +declared_dependency("libxfont", "util-macros", "build"). +node("util-macros") :- depends_on("libxfont", "util-macros"), node("libxfont"). + +declared_dependency("libxfont", "xproto", "build"). +node("xproto") :- depends_on("libxfont", "xproto"), node("libxfont"). + +declared_dependency("libxfont", "xtrans", "build"). +node("xtrans") :- depends_on("libxfont", "xtrans"), node("libxfont"). + + +%---------------------------------------------------------------------------- +% Package: libxft +%---------------------------------------------------------------------------- +version_declared("libxft", "2.3.2", 0). + +declared_dependency("libxft", "fontconfig", "build"). +declared_dependency("libxft", "fontconfig", "link"). +node("fontconfig") :- depends_on("libxft", "fontconfig"), node("libxft"). + +declared_dependency("libxft", "freetype", "build"). +declared_dependency("libxft", "freetype", "link"). +node("freetype") :- depends_on("libxft", "freetype"), node("libxft"). + +declared_dependency("libxft", "libx11", "build"). +declared_dependency("libxft", "libx11", "link"). +node("libx11") :- depends_on("libxft", "libx11"), node("libxft"). + +declared_dependency("libxft", "libxrender", "build"). +declared_dependency("libxft", "libxrender", "link"). +node("libxrender") :- depends_on("libxft", "libxrender"), node("libxft"). + +declared_dependency("libxft", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxft", "pkgconfig"), node("libxft"). + +declared_dependency("libxft", "util-macros", "build"). +node("util-macros") :- depends_on("libxft", "util-macros"), node("libxft"). + + +%---------------------------------------------------------------------------- +% Package: libxml2 +%---------------------------------------------------------------------------- +version_declared("libxml2", "2.9.9", 0). +version_declared("libxml2", "2.9.8", 1). +version_declared("libxml2", "2.9.4", 2). +version_declared("libxml2", "2.9.2", 3). +version_declared("libxml2", "2.7.8", 4). + +variant("libxml2", "python"). +variant_single_value("libxml2", "python"). +variant_default_value("libxml2", "python", "False"). +variant_possible_value("libxml2", "python", "False"). +variant_possible_value("libxml2", "python", "True"). + +declared_dependency("libxml2", "libiconv", "build"). +declared_dependency("libxml2", "libiconv", "link"). +node("libiconv") :- depends_on("libxml2", "libiconv"), node("libxml2"). + +declared_dependency("libxml2", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxml2", "pkgconfig"), node("libxml2"). + +declared_dependency("libxml2", "python", "build") :- node("libxml2"), variant_value("libxml2", "python", "True"). +declared_dependency("libxml2", "python", "link") :- node("libxml2"), variant_value("libxml2", "python", "True"). +node("python") :- depends_on("libxml2", "python"), node("libxml2"), variant_value("libxml2", "python", "True"). +variant_set("python", "libxml2", "False") :- depends_on("libxml2", "python"), node("libxml2"), variant_value("libxml2", "python", "True"). +variant_set("python", "shared", "True") :- depends_on("libxml2", "python"), node("libxml2"), variant_value("libxml2", "python", "True"). + +declared_dependency("libxml2", "xz", "build"). +declared_dependency("libxml2", "xz", "link"). +node("xz") :- depends_on("libxml2", "xz"), node("libxml2"). + +declared_dependency("libxml2", "zlib", "build"). +declared_dependency("libxml2", "zlib", "link"). +node("zlib") :- depends_on("libxml2", "zlib"), node("libxml2"). + + +%---------------------------------------------------------------------------- +% Package: libxrender +%---------------------------------------------------------------------------- +version_declared("libxrender", "0.9.10", 0). +version_declared("libxrender", "0.9.9", 1). + +declared_dependency("libxrender", "libx11", "build"). +declared_dependency("libxrender", "libx11", "link"). +node("libx11") :- depends_on("libxrender", "libx11"), node("libxrender"). + +declared_dependency("libxrender", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxrender", "pkgconfig"), node("libxrender"). + +declared_dependency("libxrender", "renderproto", "build"). +declared_dependency("libxrender", "renderproto", "link"). +node("renderproto") :- depends_on("libxrender", "renderproto"), node("libxrender"). + +declared_dependency("libxrender", "util-macros", "build"). +node("util-macros") :- depends_on("libxrender", "util-macros"), node("libxrender"). + + +%---------------------------------------------------------------------------- +% Package: libxscrnsaver +%---------------------------------------------------------------------------- +version_declared("libxscrnsaver", "1.2.2", 0). + +declared_dependency("libxscrnsaver", "libx11", "build"). +declared_dependency("libxscrnsaver", "libx11", "link"). +node("libx11") :- depends_on("libxscrnsaver", "libx11"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "libxext", "build"). +declared_dependency("libxscrnsaver", "libxext", "link"). +node("libxext") :- depends_on("libxscrnsaver", "libxext"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxscrnsaver", "pkgconfig"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "scrnsaverproto", "build"). +node("scrnsaverproto") :- depends_on("libxscrnsaver", "scrnsaverproto"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "util-macros", "build"). +node("util-macros") :- depends_on("libxscrnsaver", "util-macros"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "xextproto", "build"). +node("xextproto") :- depends_on("libxscrnsaver", "xextproto"), node("libxscrnsaver"). + + +%---------------------------------------------------------------------------- +% Package: m4 +%---------------------------------------------------------------------------- +version_declared("m4", "1.4.18", 0). +version_declared("m4", "1.4.17", 1). + +variant("m4", "sigsegv"). +variant_single_value("m4", "sigsegv"). +variant_default_value("m4", "sigsegv", "True"). +variant_possible_value("m4", "sigsegv", "False"). +variant_possible_value("m4", "sigsegv", "True"). + +declared_dependency("m4", "libsigsegv", "build") :- node("m4"), variant_value("m4", "sigsegv", "True"). +declared_dependency("m4", "libsigsegv", "link") :- node("m4"), variant_value("m4", "sigsegv", "True"). +node("libsigsegv") :- depends_on("m4", "libsigsegv"), node("m4"), variant_value("m4", "sigsegv", "True"). + + +%---------------------------------------------------------------------------- +% Package: mkfontdir +%---------------------------------------------------------------------------- +version_declared("mkfontdir", "1.0.7", 0). + +declared_dependency("mkfontdir", "mkfontscale", "run"). +node("mkfontscale") :- depends_on("mkfontdir", "mkfontscale"), node("mkfontdir"). + +declared_dependency("mkfontdir", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("mkfontdir", "pkgconfig"), node("mkfontdir"). + +declared_dependency("mkfontdir", "util-macros", "build"). +node("util-macros") :- depends_on("mkfontdir", "util-macros"), node("mkfontdir"). + + +%---------------------------------------------------------------------------- +% Package: mkfontscale +%---------------------------------------------------------------------------- +version_declared("mkfontscale", "1.1.2", 0). + +declared_dependency("mkfontscale", "freetype", "build"). +declared_dependency("mkfontscale", "freetype", "link"). +node("freetype") :- depends_on("mkfontscale", "freetype"), node("mkfontscale"). + +declared_dependency("mkfontscale", "libfontenc", "build"). +declared_dependency("mkfontscale", "libfontenc", "link"). +node("libfontenc") :- depends_on("mkfontscale", "libfontenc"), node("mkfontscale"). + +declared_dependency("mkfontscale", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("mkfontscale", "pkgconfig"), node("mkfontscale"). + +declared_dependency("mkfontscale", "util-macros", "build"). +node("util-macros") :- depends_on("mkfontscale", "util-macros"), node("mkfontscale"). + +declared_dependency("mkfontscale", "xproto", "build"). +node("xproto") :- depends_on("mkfontscale", "xproto"), node("mkfontscale"). + + +%---------------------------------------------------------------------------- +% Package: ncurses +%---------------------------------------------------------------------------- +version_declared("ncurses", "6.1", 0). +version_declared("ncurses", "6.0", 1). +version_declared("ncurses", "5.9", 2). + +variant("ncurses", "symlinks"). +variant_single_value("ncurses", "symlinks"). +variant_default_value("ncurses", "symlinks", "False"). +variant_possible_value("ncurses", "symlinks", "False"). +variant_possible_value("ncurses", "symlinks", "True"). + +variant("ncurses", "termlib"). +variant_single_value("ncurses", "termlib"). +variant_default_value("ncurses", "termlib", "False"). +variant_possible_value("ncurses", "termlib", "False"). +variant_possible_value("ncurses", "termlib", "True"). + +declared_dependency("ncurses", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("ncurses", "pkgconfig"), node("ncurses"). + + +%---------------------------------------------------------------------------- +% Package: openssl +%---------------------------------------------------------------------------- +version_declared("openssl", "1.1.1d", 0). +version_declared("openssl", "1.1.1c", 1). +version_declared("openssl", "1.1.1b", 2). +version_declared("openssl", "1.1.1a", 3). +version_declared("openssl", "1.1.1", 4). +version_declared("openssl", "1.1.0l", 5). +version_declared("openssl", "1.1.0k", 6). +version_declared("openssl", "1.1.0j", 7). +version_declared("openssl", "1.1.0i", 8). +version_declared("openssl", "1.1.0g", 9). +version_declared("openssl", "1.1.0e", 10). +version_declared("openssl", "1.1.0d", 11). +version_declared("openssl", "1.1.0c", 12). +version_declared("openssl", "1.0.2t", 13). +version_declared("openssl", "1.0.2s", 14). +version_declared("openssl", "1.0.2r", 15). +version_declared("openssl", "1.0.2p", 16). +version_declared("openssl", "1.0.2o", 17). +version_declared("openssl", "1.0.2n", 18). +version_declared("openssl", "1.0.2m", 19). +version_declared("openssl", "1.0.2k", 20). +version_declared("openssl", "1.0.2j", 21). +version_declared("openssl", "1.0.2i", 22). +version_declared("openssl", "1.0.2h", 23). +version_declared("openssl", "1.0.2g", 24). +version_declared("openssl", "1.0.2f", 25). +version_declared("openssl", "1.0.2e", 26). +version_declared("openssl", "1.0.2d", 27). +version_declared("openssl", "1.0.1u", 28). +version_declared("openssl", "1.0.1t", 29). +version_declared("openssl", "1.0.1r", 30). +version_declared("openssl", "1.0.1h", 31). +version_declared("openssl", "1.0.1e", 32). + +variant("openssl", "systemcerts"). +variant_single_value("openssl", "systemcerts"). +variant_default_value("openssl", "systemcerts", "True"). +variant_possible_value("openssl", "systemcerts", "False"). +variant_possible_value("openssl", "systemcerts", "True"). + +declared_dependency("openssl", "perl", "build"). +declared_dependency("openssl", "perl", "test"). +node("perl") :- depends_on("openssl", "perl"), node("openssl"). + +declared_dependency("openssl", "zlib", "build"). +declared_dependency("openssl", "zlib", "link"). +node("zlib") :- depends_on("openssl", "zlib"), node("openssl"). + + +%---------------------------------------------------------------------------- +% Package: perl +%---------------------------------------------------------------------------- +version_declared("perl", "5.30.1", 0). +version_declared("perl", "5.31.7", 1). +version_declared("perl", "5.31.4", 2). +version_declared("perl", "5.30.0", 3). +version_declared("perl", "5.28.0", 4). +version_declared("perl", "5.26.2", 5). +version_declared("perl", "5.24.1", 6). +version_declared("perl", "5.22.4", 7). +version_declared("perl", "5.22.3", 8). +version_declared("perl", "5.22.2", 9). +version_declared("perl", "5.22.1", 10). +version_declared("perl", "5.22.0", 11). +version_declared("perl", "5.20.3", 12). +version_declared("perl", "5.18.4", 13). +version_declared("perl", "5.16.3", 14). + +variant("perl", "cpanm"). +variant_single_value("perl", "cpanm"). +variant_default_value("perl", "cpanm", "True"). +variant_possible_value("perl", "cpanm", "False"). +variant_possible_value("perl", "cpanm", "True"). + +variant("perl", "shared"). +variant_single_value("perl", "shared"). +variant_default_value("perl", "shared", "True"). +variant_possible_value("perl", "shared", "False"). +variant_possible_value("perl", "shared", "True"). + +variant("perl", "threads"). +variant_single_value("perl", "threads"). +variant_default_value("perl", "threads", "True"). +variant_possible_value("perl", "threads", "False"). +variant_possible_value("perl", "threads", "True"). + +declared_dependency("perl", "gdbm", "build"). +declared_dependency("perl", "gdbm", "link"). +node("gdbm") :- depends_on("perl", "gdbm"), node("perl"). + + +%---------------------------------------------------------------------------- +% Package: pkg-config +%---------------------------------------------------------------------------- +version_declared("pkg-config", "0.29.2", 0). +version_declared("pkg-config", "0.29.1", 1). +version_declared("pkg-config", "0.28", 2). + +variant("pkg-config", "internal_glib"). +variant_single_value("pkg-config", "internal_glib"). +variant_default_value("pkg-config", "internal_glib", "True"). +variant_possible_value("pkg-config", "internal_glib", "False"). +variant_possible_value("pkg-config", "internal_glib", "True"). + + +%---------------------------------------------------------------------------- +% Package: pkgconf +%---------------------------------------------------------------------------- +version_declared("pkgconf", "1.6.3", 0). +version_declared("pkgconf", "1.6.1", 1). +version_declared("pkgconf", "1.6.0", 2). +version_declared("pkgconf", "1.5.4", 3). +version_declared("pkgconf", "1.4.2", 4). +version_declared("pkgconf", "1.4.0", 5). +version_declared("pkgconf", "1.3.10", 6). +version_declared("pkgconf", "1.3.8", 7). + + +%---------------------------------------------------------------------------- +% Package: python +%---------------------------------------------------------------------------- +version_declared("python", "3.7.6", 0). +version_declared("python", "3.8.1", 1). +version_declared("python", "3.8.0", 2). +version_declared("python", "3.7.5", 3). +version_declared("python", "3.7.4", 4). +version_declared("python", "3.7.3", 5). +version_declared("python", "3.7.2", 6). +version_declared("python", "3.7.1", 7). +version_declared("python", "3.7.0", 8). +version_declared("python", "3.6.8", 9). +version_declared("python", "3.6.7", 10). +version_declared("python", "3.6.6", 11). +version_declared("python", "3.6.5", 12). +version_declared("python", "3.6.4", 13). +version_declared("python", "3.6.3", 14). +version_declared("python", "3.6.2", 15). +version_declared("python", "3.6.1", 16). +version_declared("python", "3.6.0", 17). +version_declared("python", "3.5.7", 18). +version_declared("python", "3.5.2", 19). +version_declared("python", "3.5.1", 20). +version_declared("python", "3.5.0", 21). +version_declared("python", "3.4.10", 22). +version_declared("python", "3.4.3", 23). +version_declared("python", "3.3.6", 24). +version_declared("python", "3.2.6", 25). +version_declared("python", "3.1.5", 26). +version_declared("python", "2.7.16", 27). +version_declared("python", "2.7.15", 28). +version_declared("python", "2.7.14", 29). +version_declared("python", "2.7.13", 30). +version_declared("python", "2.7.12", 31). +version_declared("python", "2.7.11", 32). +version_declared("python", "2.7.10", 33). +version_declared("python", "2.7.9", 34). +version_declared("python", "2.7.8", 35). + +variant("python", "bz2"). +variant_single_value("python", "bz2"). +variant_default_value("python", "bz2", "True"). +variant_possible_value("python", "bz2", "False"). +variant_possible_value("python", "bz2", "True"). + +variant("python", "ctypes"). +variant_single_value("python", "ctypes"). +variant_default_value("python", "ctypes", "True"). +variant_possible_value("python", "ctypes", "False"). +variant_possible_value("python", "ctypes", "True"). + +variant("python", "dbm"). +variant_single_value("python", "dbm"). +variant_default_value("python", "dbm", "True"). +variant_possible_value("python", "dbm", "False"). +variant_possible_value("python", "dbm", "True"). + +variant("python", "debug"). +variant_single_value("python", "debug"). +variant_default_value("python", "debug", "False"). +variant_possible_value("python", "debug", "False"). +variant_possible_value("python", "debug", "True"). + +variant("python", "libxml2"). +variant_single_value("python", "libxml2"). +variant_default_value("python", "libxml2", "True"). +variant_possible_value("python", "libxml2", "False"). +variant_possible_value("python", "libxml2", "True"). + +variant("python", "lzma"). +variant_single_value("python", "lzma"). +variant_default_value("python", "lzma", "True"). +variant_possible_value("python", "lzma", "False"). +variant_possible_value("python", "lzma", "True"). + +variant("python", "nis"). +variant_single_value("python", "nis"). +variant_default_value("python", "nis", "False"). +variant_possible_value("python", "nis", "False"). +variant_possible_value("python", "nis", "True"). + +variant("python", "optimizations"). +variant_single_value("python", "optimizations"). +variant_default_value("python", "optimizations", "False"). +variant_possible_value("python", "optimizations", "False"). +variant_possible_value("python", "optimizations", "True"). + +variant("python", "pic"). +variant_single_value("python", "pic"). +variant_default_value("python", "pic", "True"). +variant_possible_value("python", "pic", "False"). +variant_possible_value("python", "pic", "True"). + +variant("python", "pyexpat"). +variant_single_value("python", "pyexpat"). +variant_default_value("python", "pyexpat", "True"). +variant_possible_value("python", "pyexpat", "False"). +variant_possible_value("python", "pyexpat", "True"). + +variant("python", "pythoncmd"). +variant_single_value("python", "pythoncmd"). +variant_default_value("python", "pythoncmd", "True"). +variant_possible_value("python", "pythoncmd", "False"). +variant_possible_value("python", "pythoncmd", "True"). + +variant("python", "readline"). +variant_single_value("python", "readline"). +variant_default_value("python", "readline", "True"). +variant_possible_value("python", "readline", "False"). +variant_possible_value("python", "readline", "True"). + +variant("python", "shared"). +variant_single_value("python", "shared"). +variant_default_value("python", "shared", "False"). +variant_possible_value("python", "shared", "False"). +variant_possible_value("python", "shared", "True"). + +variant("python", "sqlite3"). +variant_single_value("python", "sqlite3"). +variant_default_value("python", "sqlite3", "True"). +variant_possible_value("python", "sqlite3", "False"). +variant_possible_value("python", "sqlite3", "True"). + +variant("python", "ssl"). +variant_single_value("python", "ssl"). +variant_default_value("python", "ssl", "True"). +variant_possible_value("python", "ssl", "False"). +variant_possible_value("python", "ssl", "True"). + +variant("python", "tix"). +variant_single_value("python", "tix"). +variant_default_value("python", "tix", "False"). +variant_possible_value("python", "tix", "False"). +variant_possible_value("python", "tix", "True"). + +variant("python", "tkinter"). +variant_single_value("python", "tkinter"). +variant_default_value("python", "tkinter", "False"). +variant_possible_value("python", "tkinter", "False"). +variant_possible_value("python", "tkinter", "True"). + +variant("python", "ucs4"). +variant_single_value("python", "ucs4"). +variant_default_value("python", "ucs4", "False"). +variant_possible_value("python", "ucs4", "False"). +variant_possible_value("python", "ucs4", "True"). + +variant("python", "uuid"). +variant_single_value("python", "uuid"). +variant_default_value("python", "uuid", "False"). +variant_possible_value("python", "uuid", "False"). +variant_possible_value("python", "uuid", "True"). + +variant("python", "zlib"). +variant_single_value("python", "zlib"). +variant_default_value("python", "zlib", "True"). +variant_possible_value("python", "zlib", "False"). +variant_possible_value("python", "zlib", "True"). + +declared_dependency("python", "bzip2", "build") :- node("python"), variant_value("python", "bz2", "True"). +declared_dependency("python", "bzip2", "link") :- node("python"), variant_value("python", "bz2", "True"). +node("bzip2") :- depends_on("python", "bzip2"), node("python"), variant_value("python", "bz2", "True"). + +declared_dependency("python", "expat", "build") :- node("python"), variant_value("python", "pyexpat", "True"). +declared_dependency("python", "expat", "link") :- node("python"), variant_value("python", "pyexpat", "True"). +node("expat") :- depends_on("python", "expat"), node("python"), variant_value("python", "pyexpat", "True"). + +declared_dependency("python", "gdbm", "build") :- node("python"), variant_value("python", "dbm", "True"). +declared_dependency("python", "gdbm", "link") :- node("python"), variant_value("python", "dbm", "True"). +node("gdbm") :- depends_on("python", "gdbm"), node("python"), variant_value("python", "dbm", "True"). + +declared_dependency("python", "gettext", "build") :- node("python"), variant_value("python", "libxml2", "False"). +declared_dependency("python", "gettext", "link") :- node("python"), variant_value("python", "libxml2", "False"). +node("gettext") :- depends_on("python", "gettext"), node("python"), variant_value("python", "libxml2", "False"). +variant_set("gettext", "libxml2", "False") :- depends_on("python", "gettext"), node("python"), variant_value("python", "libxml2", "False"). +declared_dependency("python", "gettext", "build") :- node("python"), variant_value("python", "libxml2", "True"). +declared_dependency("python", "gettext", "link") :- node("python"), variant_value("python", "libxml2", "True"). +node("gettext") :- depends_on("python", "gettext"), node("python"), variant_value("python", "libxml2", "True"). +variant_set("gettext", "libxml2", "True") :- depends_on("python", "gettext"), node("python"), variant_value("python", "libxml2", "True"). + +declared_dependency("python", "libffi", "build") :- node("python"), variant_value("python", "ctypes", "True"). +declared_dependency("python", "libffi", "link") :- node("python"), variant_value("python", "ctypes", "True"). +node("libffi") :- depends_on("python", "libffi"), node("python"), variant_value("python", "ctypes", "True"). + +declared_dependency("python", "libnsl", "build") :- node("python"), variant_value("python", "nis", "True"). +declared_dependency("python", "libnsl", "link") :- node("python"), variant_value("python", "nis", "True"). +node("libnsl") :- depends_on("python", "libnsl"), node("python"), variant_value("python", "nis", "True"). + +declared_dependency("python", "ncurses", "build") :- node("python"), variant_value("python", "readline", "True"). +declared_dependency("python", "ncurses", "link") :- node("python"), variant_value("python", "readline", "True"). +node("ncurses") :- depends_on("python", "ncurses"), node("python"), variant_value("python", "readline", "True"). + +declared_dependency("python", "openssl", "build") :- node("python"), variant_value("python", "ssl", "True"). +declared_dependency("python", "openssl", "link") :- node("python"), variant_value("python", "ssl", "True"). +node("openssl") :- depends_on("python", "openssl"), node("python"), variant_value("python", "ssl", "True"). +declared_dependency("python", "openssl", "build") :- node("python"), 1 { version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "ssl", "True"). +declared_dependency("python", "openssl", "link") :- node("python"), 1 { version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "ssl", "True"). +node("openssl") :- depends_on("python", "openssl"), node("python"), 1 { version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "ssl", "True"). +1 { version("openssl", "1.0.2d"); version("openssl", "1.0.2e"); version("openssl", "1.0.2f"); version("openssl", "1.0.2g"); version("openssl", "1.0.2h"); version("openssl", "1.0.2i"); version("openssl", "1.0.2j"); version("openssl", "1.0.2k"); version("openssl", "1.0.2m"); version("openssl", "1.0.2n"); version("openssl", "1.0.2o"); version("openssl", "1.0.2p"); version("openssl", "1.0.2r"); version("openssl", "1.0.2s"); version("openssl", "1.0.2t"); version("openssl", "1.1.0c"); version("openssl", "1.1.0d"); version("openssl", "1.1.0e"); version("openssl", "1.1.0g"); version("openssl", "1.1.0i"); version("openssl", "1.1.0j"); version("openssl", "1.1.0k"); version("openssl", "1.1.0l"); version("openssl", "1.1.1"); version("openssl", "1.1.1a"); version("openssl", "1.1.1b"); version("openssl", "1.1.1c"); version("openssl", "1.1.1d") } 1 :- depends_on("python", "openssl"), node("python"), 1 { version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "ssl", "True"). + +declared_dependency("python", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("python", "pkgconfig"), node("python"). + +declared_dependency("python", "readline", "build") :- node("python"), variant_value("python", "readline", "True"). +declared_dependency("python", "readline", "link") :- node("python"), variant_value("python", "readline", "True"). +node("readline") :- depends_on("python", "readline"), node("python"), variant_value("python", "readline", "True"). + +declared_dependency("python", "sqlite", "build") :- node("python"), variant_value("python", "sqlite3", "True"). +declared_dependency("python", "sqlite", "link") :- node("python"), variant_value("python", "sqlite3", "True"). +node("sqlite") :- depends_on("python", "sqlite"), node("python"), variant_value("python", "sqlite3", "True"). + +declared_dependency("python", "tcl", "build") :- node("python"), variant_value("python", "tkinter", "True"). +declared_dependency("python", "tcl", "link") :- node("python"), variant_value("python", "tkinter", "True"). +node("tcl") :- depends_on("python", "tcl"), node("python"), variant_value("python", "tkinter", "True"). + +declared_dependency("python", "tix", "build") :- node("python"), variant_value("python", "tix", "True"). +declared_dependency("python", "tix", "link") :- node("python"), variant_value("python", "tix", "True"). +node("tix") :- depends_on("python", "tix"), node("python"), variant_value("python", "tix", "True"). + +declared_dependency("python", "tk", "build") :- node("python"), variant_value("python", "tkinter", "True"). +declared_dependency("python", "tk", "link") :- node("python"), variant_value("python", "tkinter", "True"). +node("tk") :- depends_on("python", "tk"), node("python"), variant_value("python", "tkinter", "True"). + +declared_dependency("python", "xz", "build") :- node("python"), 1 { version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "lzma", "True"). +declared_dependency("python", "xz", "link") :- node("python"), 1 { version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "lzma", "True"). +node("xz") :- depends_on("python", "xz"), node("python"), 1 { version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "lzma", "True"). + +declared_dependency("python", "zlib", "build") :- node("python"), variant_value("python", "zlib", "True"). +declared_dependency("python", "zlib", "link") :- node("python"), variant_value("python", "zlib", "True"). +node("zlib") :- depends_on("python", "zlib"), node("python"), variant_value("python", "zlib", "True"). + + +%---------------------------------------------------------------------------- +% Package: readline +%---------------------------------------------------------------------------- +version_declared("readline", "8.0", 0). +version_declared("readline", "7.0", 1). +version_declared("readline", "6.3", 2). + +declared_dependency("readline", "ncurses", "build"). +declared_dependency("readline", "ncurses", "link"). +node("ncurses") :- depends_on("readline", "ncurses"), node("readline"). + + +%---------------------------------------------------------------------------- +% Package: renderproto +%---------------------------------------------------------------------------- +version_declared("renderproto", "0.11.1", 0). + +declared_dependency("renderproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("renderproto", "pkgconfig"), node("renderproto"). + +declared_dependency("renderproto", "util-macros", "build"). +node("util-macros") :- depends_on("renderproto", "util-macros"), node("renderproto"). + + +%---------------------------------------------------------------------------- +% Package: rpcsvc-proto +%---------------------------------------------------------------------------- +version_declared("rpcsvc-proto", "1.4", 0). + +declared_dependency("rpcsvc-proto", "gettext", "build"). +declared_dependency("rpcsvc-proto", "gettext", "link"). +node("gettext") :- depends_on("rpcsvc-proto", "gettext"), node("rpcsvc-proto"). + + +%---------------------------------------------------------------------------- +% Package: scrnsaverproto +%---------------------------------------------------------------------------- +version_declared("scrnsaverproto", "1.2.2", 0). + +declared_dependency("scrnsaverproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("scrnsaverproto", "pkgconfig"), node("scrnsaverproto"). + +declared_dependency("scrnsaverproto", "util-macros", "build"). +node("util-macros") :- depends_on("scrnsaverproto", "util-macros"), node("scrnsaverproto"). + + +%---------------------------------------------------------------------------- +% Package: sqlite +%---------------------------------------------------------------------------- +version_declared("sqlite", "3.30.1", 0). +version_declared("sqlite", "3.30.0", 1). +version_declared("sqlite", "3.29.0", 2). +version_declared("sqlite", "3.28.0", 3). +version_declared("sqlite", "3.27.2", 4). +version_declared("sqlite", "3.27.1", 5). +version_declared("sqlite", "3.27.0", 6). +version_declared("sqlite", "3.26.0", 7). + +variant("sqlite", "column_metadata"). +variant_single_value("sqlite", "column_metadata"). +variant_default_value("sqlite", "column_metadata", "False"). +variant_possible_value("sqlite", "column_metadata", "False"). +variant_possible_value("sqlite", "column_metadata", "True"). + +variant("sqlite", "fts"). +variant_single_value("sqlite", "fts"). +variant_default_value("sqlite", "fts", "True"). +variant_possible_value("sqlite", "fts", "False"). +variant_possible_value("sqlite", "fts", "True"). + +variant("sqlite", "functions"). +variant_single_value("sqlite", "functions"). +variant_default_value("sqlite", "functions", "False"). +variant_possible_value("sqlite", "functions", "False"). +variant_possible_value("sqlite", "functions", "True"). + +variant("sqlite", "rtree"). +variant_single_value("sqlite", "rtree"). +variant_default_value("sqlite", "rtree", "False"). +variant_possible_value("sqlite", "rtree", "False"). +variant_possible_value("sqlite", "rtree", "True"). + +declared_dependency("sqlite", "readline", "build"). +declared_dependency("sqlite", "readline", "link"). +node("readline") :- depends_on("sqlite", "readline"), node("sqlite"). + +declared_dependency("sqlite", "zlib", "build"). +declared_dependency("sqlite", "zlib", "link"). +node("zlib") :- depends_on("sqlite", "zlib"), node("sqlite"). + + +%---------------------------------------------------------------------------- +% Package: tar +%---------------------------------------------------------------------------- +version_declared("tar", "1.32", 0). +version_declared("tar", "1.31", 1). +version_declared("tar", "1.30", 2). +version_declared("tar", "1.29", 3). +version_declared("tar", "1.28", 4). + +declared_dependency("tar", "libiconv", "build"). +declared_dependency("tar", "libiconv", "link"). +node("libiconv") :- depends_on("tar", "libiconv"), node("tar"). + + +%---------------------------------------------------------------------------- +% Package: tcl +%---------------------------------------------------------------------------- +version_declared("tcl", "8.6.8", 0). +version_declared("tcl", "8.6.6", 1). +version_declared("tcl", "8.6.5", 2). +version_declared("tcl", "8.6.4", 3). +version_declared("tcl", "8.6.3", 4). +version_declared("tcl", "8.5.19", 5). + +declared_dependency("tcl", "zlib", "build"). +declared_dependency("tcl", "zlib", "link"). +node("zlib") :- depends_on("tcl", "zlib"), node("tcl"). + + +%---------------------------------------------------------------------------- +% Package: texinfo +%---------------------------------------------------------------------------- +version_declared("texinfo", "6.5", 0). +version_declared("texinfo", "6.3", 1). +version_declared("texinfo", "6.0", 2). +version_declared("texinfo", "5.2", 3). +version_declared("texinfo", "5.1", 4). +version_declared("texinfo", "5.0", 5). + +declared_dependency("texinfo", "perl", "build"). +declared_dependency("texinfo", "perl", "link"). +node("perl") :- depends_on("texinfo", "perl"), node("texinfo"). + + +%---------------------------------------------------------------------------- +% Package: tix +%---------------------------------------------------------------------------- +version_declared("tix", "8.4.3", 0). + +declared_dependency("tix", "tcl", "build"). +declared_dependency("tix", "tcl", "link"). +node("tcl") :- depends_on("tix", "tcl"), node("tix"). +1 { version("tcl", "8.5.19") } 1 :- depends_on("tix", "tcl"), node("tix"). + +declared_dependency("tix", "tk", "build"). +declared_dependency("tix", "tk", "link"). +node("tk") :- depends_on("tix", "tk"), node("tix"). +1 { version("tk", "8.5.19") } 1 :- depends_on("tix", "tk"), node("tix"). + + +%---------------------------------------------------------------------------- +% Package: tk +%---------------------------------------------------------------------------- +version_declared("tk", "8.6.8", 0). +version_declared("tk", "8.6.6", 1). +version_declared("tk", "8.6.5", 2). +version_declared("tk", "8.6.3", 3). +version_declared("tk", "8.5.19", 4). + +variant("tk", "xft"). +variant_single_value("tk", "xft"). +variant_default_value("tk", "xft", "True"). +variant_possible_value("tk", "xft", "False"). +variant_possible_value("tk", "xft", "True"). + +variant("tk", "xss"). +variant_single_value("tk", "xss"). +variant_default_value("tk", "xss", "True"). +variant_possible_value("tk", "xss", "False"). +variant_possible_value("tk", "xss", "True"). + +declared_dependency("tk", "libx11", "build"). +declared_dependency("tk", "libx11", "link"). +node("libx11") :- depends_on("tk", "libx11"), node("tk"). + +declared_dependency("tk", "libxft", "build") :- node("tk"), variant_value("tk", "xft", "True"). +declared_dependency("tk", "libxft", "link") :- node("tk"), variant_value("tk", "xft", "True"). +node("libxft") :- depends_on("tk", "libxft"), node("tk"), variant_value("tk", "xft", "True"). + +declared_dependency("tk", "libxscrnsaver", "build") :- node("tk"), variant_value("tk", "xss", "True"). +declared_dependency("tk", "libxscrnsaver", "link") :- node("tk"), variant_value("tk", "xss", "True"). +node("libxscrnsaver") :- depends_on("tk", "libxscrnsaver"), node("tk"), variant_value("tk", "xss", "True"). + +declared_dependency("tk", "tcl", "build"). +declared_dependency("tk", "tcl", "link"). +node("tcl") :- depends_on("tk", "tcl"), node("tk"). +declared_dependency("tk", "tcl", "build") :- node("tk"), 1 { version("tk", "8.6.3"); version("tk", "8.6.5"); version("tk", "8.6.6"); version("tk", "8.6.8") } 1. +declared_dependency("tk", "tcl", "link") :- node("tk"), 1 { version("tk", "8.6.3"); version("tk", "8.6.5"); version("tk", "8.6.6"); version("tk", "8.6.8") } 1. +node("tcl") :- depends_on("tk", "tcl"), node("tk"), 1 { version("tk", "8.6.3"); version("tk", "8.6.5"); version("tk", "8.6.6"); version("tk", "8.6.8") } 1. +1 { version("tcl", "8.6.3"); version("tcl", "8.6.4"); version("tcl", "8.6.5"); version("tcl", "8.6.6"); version("tcl", "8.6.8") } 1 :- depends_on("tk", "tcl"), node("tk"), 1 { version("tk", "8.6.3"); version("tk", "8.6.5"); version("tk", "8.6.6"); version("tk", "8.6.8") } 1. + + +%---------------------------------------------------------------------------- +% Package: util-macros +%---------------------------------------------------------------------------- +version_declared("util-macros", "1.19.1", 0). +version_declared("util-macros", "1.19.0", 1). + + +%---------------------------------------------------------------------------- +% Package: xcb-proto +%---------------------------------------------------------------------------- +version_declared("xcb-proto", "1.13", 0). +version_declared("xcb-proto", "1.12", 1). +version_declared("xcb-proto", "1.11", 2). + + +%---------------------------------------------------------------------------- +% Package: xextproto +%---------------------------------------------------------------------------- +version_declared("xextproto", "7.3.0", 0). + +declared_dependency("xextproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("xextproto", "pkgconfig"), node("xextproto"). + +declared_dependency("xextproto", "util-macros", "build"). +node("util-macros") :- depends_on("xextproto", "util-macros"), node("xextproto"). + + +%---------------------------------------------------------------------------- +% Package: xproto +%---------------------------------------------------------------------------- +version_declared("xproto", "7.0.31", 0). +version_declared("xproto", "7.0.29", 1). + +declared_dependency("xproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("xproto", "pkgconfig"), node("xproto"). + +declared_dependency("xproto", "util-macros", "build"). +node("util-macros") :- depends_on("xproto", "util-macros"), node("xproto"). + + +%---------------------------------------------------------------------------- +% Package: xtrans +%---------------------------------------------------------------------------- +version_declared("xtrans", "1.3.5", 0). + +declared_dependency("xtrans", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("xtrans", "pkgconfig"), node("xtrans"). + +declared_dependency("xtrans", "util-macros", "build"). +node("util-macros") :- depends_on("xtrans", "util-macros"), node("xtrans"). + + +%---------------------------------------------------------------------------- +% Package: xz +%---------------------------------------------------------------------------- +version_declared("xz", "5.2.4", 0). +version_declared("xz", "5.2.3", 1). +version_declared("xz", "5.2.2", 2). +version_declared("xz", "5.2.0", 3). + + +%---------------------------------------------------------------------------- +% Package: zlib +%---------------------------------------------------------------------------- +version_declared("zlib", "1.2.11", 0). +version_declared("zlib", "1.2.8", 1). +version_declared("zlib", "1.2.3", 2). + +variant("zlib", "optimize"). +variant_single_value("zlib", "optimize"). +variant_default_value("zlib", "optimize", "True"). +variant_possible_value("zlib", "optimize", "False"). +variant_possible_value("zlib", "optimize", "True"). + +variant("zlib", "pic"). +variant_single_value("zlib", "pic"). +variant_default_value("zlib", "pic", "True"). +variant_possible_value("zlib", "pic", "False"). +variant_possible_value("zlib", "pic", "True"). + +variant("zlib", "shared"). +variant_single_value("zlib", "shared"). +variant_default_value("zlib", "shared", "True"). +variant_possible_value("zlib", "shared", "False"). +variant_possible_value("zlib", "shared", "True"). + + +%============================================================================ +% Spec Constraints +%============================================================================ +root("blis"). + +%---------------------------------------------------------------------------- +% Spec: blis +%---------------------------------------------------------------------------- +node("blis"). + +%=============================================================================- +% Display Results +% +% This section determines what parts of the model are printed at the end +%============================================================================== +#show node/1. +#show depends_on/3. +#show version/2. +#show variant_value/3. +#show node_platform/2. +#show node_os/2. +#show node_target/2. +#show node_compiler/2. +#show node_compiler_version/3. +#show node_flag/3. +#show node_flag_compiler_default/1. +#show node_flag_source/2. +#show no_flags/2. diff --git a/lib/spack/spack/solver/hdf5.lp b/lib/spack/spack/solver/hdf5.lp new file mode 100644 index 00000000000..02ac0f77726 --- /dev/null +++ b/lib/spack/spack/solver/hdf5.lp @@ -0,0 +1,9304 @@ +%============================================================================= +% Generate +%============================================================================= + +%----------------------------------------------------------------------------- +% Environments +%----------------------------------------------------------------------------- +% +% Nodes in the concretized graph are identified by (Package, Env) -- +% where available environments come from hardware.yaml, and which +% environment a node is built for depends on whether it is a build +% dependency or a link/run/test dependency. +% + +%----------------------------------------------------------------------------- +% Version semantics +%----------------------------------------------------------------------------- + +% versions are declared w/priority -- declared with priority implies declared +version_declared(Package, Version) :- version_declared(Package, Version, _). + +% Every node in the graph has exactly one version +1 { version(Package, Version) : version_possible(Package, Version) } 1 + :- node(Package). + +% If a version is declared but conflicted, it's not possible. +version_possible(Package, Version) + :- version_declared(Package, Version), not version_conflict(Package, Version). + +version_weight(Package, Version, Weight) + :- version(Package, Version), version_declared(Package, Version, Weight). + +#defined version_conflict/2. + +%----------------------------------------------------------------------------- +% Dependency semantics +%----------------------------------------------------------------------------- +% Dependencies of any type imply that one package "depends on" another +depends_on(Package, Dependency) :- depends_on(Package, Dependency, _). + +% declared dependencies are real if they're not virtual +depends_on(Package, Dependency, Type) + :- declared_dependency(Package, Dependency, Type), not virtual(Dependency), + node(Package). + +% if you declare a dependency on a virtual, you depend on one of its providers +1 { + depends_on(Package, Provider, Type) + : provides_virtual(Provider, Virtual) +} 1 + :- declared_dependency(Package, Virtual, Type), + virtual(Virtual), + node(Package). + +% if a virtual was required by some root spec, one provider is in the DAG +1 { node(Package) : provides_virtual(Package, Virtual) } 1 + :- virtual_node(Virtual). + +% for any virtual, there can be at most one provider in the DAG +provider(Package, Virtual) + :- node(Package), provides_virtual(Package, Virtual). +0 { provider(Package, Virtual) : node(Package) } 1 :- virtual(Virtual). + +% give dependents the virtuals they want +provider_weight(Dependency, Weight) + :- virtual(Virtual), depends_on(Package, Dependency), + provider(Dependency, Virtual), + pkg_provider_preference(Package, Virtual, Dependency, Weight). +provider_weight(Dependency, Weight) + :- virtual(Virtual), depends_on(Package, Dependency), + provider(Dependency, Virtual), + not pkg_provider_preference(Package, Virtual, Dependency, _), + default_provider_preference(Virtual, Dependency, Weight). + +% if there's no preference for something, it costs 100 to discourage its +% use with minimization +provider_weight(Dependency, 100) + :- virtual(Virtual), + provider(Dependency, Virtual), + depends_on(Package, Dependency), + not pkg_provider_preference(Package, Virtual, Dependency, _), + not default_provider_preference(Virtual, Dependency, _). + +% all nodes must be reachable from some root +needed(Package) :- root(Package), node(Package). +needed(Dependency) :- root(Package), depends_on(Package, Dependency). +needed(Dependency) + :- needed(Package), depends_on(Package, Dependency), node(Package). +:- node(Package), not needed(Package). + +% real dependencies imply new nodes. +node(Dependency) :- node(Package), depends_on(Package, Dependency). + +% do not warn if generated program contains none of these. +#defined depends_on/3. +#defined declared_dependency/3. +#defined virtual/1. +#defined virtual_node/1. +#defined provides_virtual/2. +#defined pkg_provider_preference/4. +#defined default_provider_preference/3. +#defined root/1. + +%----------------------------------------------------------------------------- +% Variant semantics +%----------------------------------------------------------------------------- +% one variant value for single-valued variants. +1 { + variant_value(Package, Variant, Value) + : variant_possible_value(Package, Variant, Value) +} 1 + :- node(Package), + variant(Package, Variant), + variant_single_value(Package, Variant). + +% at least one variant value for multi-valued variants. +1 { + variant_value(Package, Variant, Value) + : variant_possible_value(Package, Variant, Value) +} + :- node(Package), + variant(Package, Variant), + not variant_single_value(Package, Variant). + +% if a variant is set to anything, it is considered 'set'. +variant_set(Package, Variant) :- variant_set(Package, Variant, _). + +% variant_set is an explicitly set variant value. If it's not 'set', +% we revert to the default value. If it is set, we force the set value +variant_value(Package, Variant, Value) + :- node(Package), + variant(Package, Variant), + variant_set(Package, Variant, Value). + +% prefer default values. +variant_not_default(Package, Variant, Value, 1) + :- variant_value(Package, Variant, Value), + not variant_default_value(Package, Variant, Value), + node(Package). + +variant_not_default(Package, Variant, Value, 0) + :- variant_value(Package, Variant, Value), + variant_default_value(Package, Variant, Value), + node(Package). + +% suppress wranings about this atom being unset. It's only set if some +% spec or some package sets it, and without this, clingo will give +% warnings like 'info: atom does not occur in any rule head'. +#defined variant/2. +#defined variant_set/3. +#defined variant_single_value/2. +#defined variant_default_value/3. +#defined variant_possible_value/3. + +%----------------------------------------------------------------------------- +% Platform/OS semantics +%----------------------------------------------------------------------------- +% one platform, os per node +% TODO: convert these to use optimization, like targets. +1 { node_platform(Package, Platform) : node_platform(Packagee, Platform) } 1 + :- node(Package). +1 { node_os(Package, OS) : node_os(Package, OS) } 1 :- node(Package). + +% arch fields for pkg P are set if set to anything +node_platform_set(Package) :- node_platform_set(Package, _). +node_os_set(Package) :- node_os_set(Package, _). + +% if no platform/os is set, fall back to the defaults +node_platform(Package, Platform) + :- node(Package), + not node_platform_set(Package), + node_platform_default(Platform). +node_os(Package, OS) + :- node(Package), not node_os_set(Package), node_os_default(OS). + +% setting os/platform on a node is a hard constraint +node_platform(Package, Platform) + :- node(Package), node_platform_set(Package, Platform). +node_os(Package, OS) :- node(Package), node_os_set(Package, OS). + +% avoid info warnings (see variants) +#defined node_platform_set/2. +#defined node_os_set/2. + +%----------------------------------------------------------------------------- +% Target semantics +%----------------------------------------------------------------------------- +% one target per node -- optimization will pick the "best" one +1 { node_target(Package, Target) : target(Target) } 1 :- node(Package). + +% can't use targets on node if the compiler for the node doesn't support them +:- node_target(Package, Target), + not compiler_supports_target(Compiler, Version, Target), + node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, Version). + +% if a target is set explicitly, respect it +node_target(Package, Target) + :- node(Package), node_target_set(Package, Target). + +% each node has the weight of its assigned target +node_target_weight(Package, Weight) + :- node(Package), node_target(Package, Target), target_weight(Target, Weight). + +#defined node_target_set/2. + +%----------------------------------------------------------------------------- +% Compiler semantics +%----------------------------------------------------------------------------- + +% one compiler per node +1 { node_compiler(Package, Compiler) : compiler(Compiler) } 1 :- node(Package). +1 { node_compiler_version(Package, Compiler, Version) + : compiler_version(Compiler, Version) } 1 :- node(Package). +1 { compiler_weight(Package, Weight) : compiler_weight(Package, Weight) } 1 + :- node(Package). + +% dependencies imply we should try to match hard compiler constraints +% todo: look at what to do about intersecting constraints here. we'd +% ideally go with the "lowest" pref in the DAG +node_compiler_match_pref(Package, Compiler) + :- node_compiler_hard(Package, Compiler). +node_compiler_match_pref(Dependency, Compiler) + :- depends_on(Package, Dependency), + node_compiler_match_pref(Package, Compiler), + not node_compiler_hard(Dependency, _). +compiler_match(Package, 1) + :- node_compiler(Package, Compiler), + node_compiler_match_pref(Package, Compiler). + +node_compiler_version_match_pref(Package, Compiler, V) + :- node_compiler_version_hard(Package, Compiler, V). +node_compiler_version_match_pref(Dependency, Compiler, V) + :- depends_on(Package, Dependency), + node_compiler_version_match_pref(Package, Compiler, V), + not node_compiler_version_hard(Dependency, Compiler, _). +compiler_version_match(Package, 1) + :- node_compiler_version(Package, Compiler, V), + node_compiler_version_match_pref(Package, Compiler, V). + +#defined node_compiler_hard/2. +#defined node_compiler_version_hard/3. + +% compilers weighted by preference acccording to packages.yaml +compiler_weight(Package, Weight) + :- node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, V), + node_compiler_preference(Package, Compiler, V, Weight). +compiler_weight(Package, Weight) + :- node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, V), + not node_compiler_preference(Package, Compiler, _, _), + default_compiler_preference(Compiler, V, Weight). +compiler_weight(Package, 100) + :- node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, Version), + not node_compiler_preference(Package, Compiler, _, _), + not default_compiler_preference(Compiler, _, _). + +#defined node_compiler_preference/4. +#defined default_compiler_preference/3. + +%----------------------------------------------------------------------------- +% Compiler flags +%----------------------------------------------------------------------------- +% propagate flags when compilers match +inherit_flags(Package, Dependency) + :- depends_on(Package, Dependency), + node_compiler(Package, Compiler), + node_compiler(Dependency, Compiler), + compiler(Compiler), flag_type(FlagType). +node_flag_inherited(Dependency, FlagType, Flag) + :- node_flag_set(Package, FlagType, Flag), inherit_flags(Package, Dependency). +node_flag_inherited(Dependency, FlagType, Flag) + :- node_flag_inherited(Package, FlagType, Flag), + inherit_flags(Package, Dependency). + +% node with flags set to anythingg is "set" +node_flag_set(Package) :- node_flag_set(Package, _, _). + +% remember where flags came from +node_flag_source(Package, Package) :- node_flag_set(Package). +node_flag_source(Dependency, Q) + :- node_flag_source(Package, Q), inherit_flags(Package, Dependency). + +% compiler flags from compilers.yaml are put on nodes if compiler matches +node_flag(Package, FlagType, Flag), +node_flag_compiler_default(Package) + :- not node_flag_set(Package), + compiler_version_flag(Compiler, Version, FlagType, Flag), + node_compiler(Package, Compiler), + node_compiler_version(Package, Compiler, Version), + flag_type(FlagType), + compiler(Compiler), + compiler_version(Compiler, Version). + +% if a flag is set to something or inherited, it's included +node_flag(Package, FlagType, Flag) :- node_flag_set(Package, FlagType, Flag). +node_flag(Package, FlagType, Flag) + :- node_flag_inherited(Package, FlagType, Flag). + +% if no node flags are set for a type, there are no flags. +no_flags(Package, FlagType) + :- not node_flag(Package, FlagType, _), node(Package), flag_type(FlagType). + +#defined compiler_version_flag/4. +#defined node_flag/3. +#defined node_flag_set/3. + +%----------------------------------------------------------------------------- +% How to optimize the spec (high to low priority) +%----------------------------------------------------------------------------- +% weight root preferences higher +% +% TODO: how best to deal with this issue? It's not clear how best to +% weight all the constraints. Without this root preference, `spack solve +% hdf5` will pick mpich instead of openmpi, even if openmpi is the +% preferred provider, because openmpi has a version constraint on hwloc. +% It ends up choosing between settling for an old version of hwloc, or +% picking the second-best provider. This workaround weights root +% preferences higher so that hdf5's prefs are more important, but it's +% not clear this is a general solution. It would be nice to weight by +% distance to root, but that seems to slow down the solve a lot. +% +% One option is to make preferences hard constraints. Or maybe we need +% to look more closely at where a constraint came from and factor that +% into our weights. e.g., a non-default variant resulting from a version +% constraint counts like a version constraint. Needs more thought later. +% +root(Package, 2) :- root(Package), node(Package). +root(Dependency, 1) :- not root(Dependency), node(Dependency). + +% prefer default variants +#minimize { + Weight*R@10,Package,Variant,Value + : variant_not_default(Package, Variant, Value, Weight), root(Package, R) +}. + +% pick most preferred virtual providers +#minimize{ + Weight*R@9,Provider : provider_weight(Provider, Weight), root(Package, R) +}. + +% prefer more recent versions. +#minimize{ + Weight@8,Package,Version : version_weight(Package, Version, Weight) +}. + +% compiler preferences +#maximize{ Weight@7,Package : compiler_match(Package, Weight) }. +#minimize{ Weight@6,Package : compiler_weight(Package, Weight) }. + +% fastest target for node + +% TODO: if these are slightly different by compiler (e.g., skylake is +% best, gcc supports skylake and broadweell, clang's best is haswell) +% things seem to get really slow. +#minimize{ Weight@5,Package : node_target_weight(Package, Weight) }. + +%============================================================================ +% General Constraints +%============================================================================ + +%---------------------------------------------------------------------------- +% Available compilers +%---------------------------------------------------------------------------- +compiler("clang"). +compiler_version("clang", "10.0.0-apple") :- compiler("clang"). +compiler("gcc"). +compiler_version("gcc", "8.2.0") :- compiler("gcc"). + +%---------------------------------------------------------------------------- +% Default compiler preferences +%---------------------------------------------------------------------------- +default_compiler_preference("clang", "10.0.0-apple", 0). +default_compiler_preference("gcc", "8.2.0", 1). + +%---------------------------------------------------------------------------- +% Default architecture +%---------------------------------------------------------------------------- +node_platform_default("darwin"). +node_os_default("mojave"). +node_target_default("skylake"). + +%---------------------------------------------------------------------------- +% Target compatibility +%---------------------------------------------------------------------------- +compiler_supports_target("gcc", "8.2.0", "skylake"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "broadwell"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "haswell"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "ivybridge"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "sandybridge"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "westmere"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "nehalem"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "core2"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "nocona"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("gcc", "8.2.0", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "skylake"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "broadwell"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "haswell"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "ivybridge"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "sandybridge"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "westmere"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "nehalem"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "core2"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "nocona"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +compiler_supports_target("clang", "10.0.0-apple", "x86_64"). +target("skylake"). +target_family("skylake", "x86_64"). +target_parent("skylake", "broadwell"). +target_weight("skylake", 0). + +target("broadwell"). +target_family("broadwell", "x86_64"). +target_parent("broadwell", "haswell"). +target_weight("broadwell", 1). + +target("haswell"). +target_family("haswell", "x86_64"). +target_parent("haswell", "ivybridge"). +target_weight("haswell", 2). + +target("ivybridge"). +target_family("ivybridge", "x86_64"). +target_parent("ivybridge", "sandybridge"). +target_weight("ivybridge", 3). + +target("sandybridge"). +target_family("sandybridge", "x86_64"). +target_parent("sandybridge", "westmere"). +target_weight("sandybridge", 4). + +target("westmere"). +target_family("westmere", "x86_64"). +target_parent("westmere", "nehalem"). +target_weight("westmere", 5). + +target("nehalem"). +target_family("nehalem", "x86_64"). +target_parent("nehalem", "core2"). +target_weight("nehalem", 6). + +target("core2"). +target_family("core2", "x86_64"). +target_parent("core2", "nocona"). +target_weight("core2", 7). + +target("nocona"). +target_family("nocona", "x86_64"). +target_parent("nocona", "x86_64"). +target_weight("nocona", 8). + +target("x86_64"). +target_family("x86_64", "x86_64"). +target_weight("x86_64", 9). + + +%---------------------------------------------------------------------------- +% Virtual providers +%---------------------------------------------------------------------------- +virtual("awk"). +provides_virtual("gawk", "awk"). +provides_virtual("mawk", "awk"). +virtual("blas"). +provides_virtual("atlas", "blas"). +provides_virtual("blis", "blas"). +provides_virtual("blis", "blas"). +provides_virtual("cray-libsci", "blas"). +provides_virtual("essl", "blas"). +provides_virtual("intel-mkl", "blas"). +provides_virtual("intel-parallel-studio", "blas"). +provides_virtual("netlib-lapack", "blas"). +provides_virtual("netlib-xblas", "blas"). +provides_virtual("openblas", "blas"). +provides_virtual("veclibfort", "blas"). +virtual("gl"). +provides_virtual("mesa", "gl"). +provides_virtual("opengl", "gl"). +provides_virtual("opengl", "gl"). +provides_virtual("opengl", "gl"). +provides_virtual("opengl", "gl"). +provides_virtual("opengl", "gl"). +provides_virtual("opengl", "gl"). +provides_virtual("opengl", "gl"). +virtual("java"). +provides_virtual("ibm-java", "java"). +provides_virtual("icedtea", "java"). +provides_virtual("jdk", "java"). +provides_virtual("jdk", "java"). +provides_virtual("jdk", "java"). +provides_virtual("jdk", "java"). +provides_virtual("jdk", "java"). +provides_virtual("jdk", "java"). +provides_virtual("openjdk", "java"). +provides_virtual("openjdk", "java"). +virtual("jpeg"). +provides_virtual("libjpeg", "jpeg"). +provides_virtual("libjpeg-turbo", "jpeg"). +virtual("lapack"). +provides_virtual("atlas", "lapack"). +provides_virtual("cray-libsci", "lapack"). +provides_virtual("intel-mkl", "lapack"). +provides_virtual("intel-parallel-studio", "lapack"). +provides_virtual("libflame", "lapack"). +provides_virtual("netlib-lapack", "lapack"). +provides_virtual("openblas", "lapack"). +provides_virtual("veclibfort", "lapack"). +virtual("mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("charmpp", "mpi"). +provides_virtual("fujitsu-mpi", "mpi"). +provides_virtual("intel-mpi", "mpi"). +provides_virtual("intel-parallel-studio", "mpi"). +provides_virtual("mpich", "mpi"). +provides_virtual("mpich", "mpi"). +provides_virtual("mpich", "mpi"). +provides_virtual("mpilander", "mpi"). +provides_virtual("mpt", "mpi"). +provides_virtual("mpt", "mpi"). +provides_virtual("mpt", "mpi"). +provides_virtual("mvapich2", "mpi"). +provides_virtual("mvapich2", "mpi"). +provides_virtual("mvapich2", "mpi"). +provides_virtual("openmpi", "mpi"). +provides_virtual("openmpi", "mpi"). +provides_virtual("openmpi", "mpi"). +provides_virtual("openmpi", "mpi"). +provides_virtual("spectrum-mpi", "mpi"). +virtual("pkgconfig"). +provides_virtual("pkg-config", "pkgconfig"). +provides_virtual("pkgconf", "pkgconfig"). +virtual("szip"). +provides_virtual("libaec", "szip"). +provides_virtual("libszip", "szip"). + +%---------------------------------------------------------------------------- +% Default virtual providers +%---------------------------------------------------------------------------- +default_provider_preference("awk", "gawk", 0). +default_provider_preference("blas", "openblas", 0). +default_provider_preference("gl", "mesa+opengl", 0). +default_provider_preference("gl", "opengl", 1). +default_provider_preference("java", "openjdk", 0). +default_provider_preference("java", "jdk", 1). +default_provider_preference("java", "ibm-java", 2). +default_provider_preference("jpeg", "libjpeg-turbo", 0). +default_provider_preference("jpeg", "libjpeg", 1). +default_provider_preference("lapack", "openblas", 0). +default_provider_preference("mpi", "openmpi", 0). +default_provider_preference("mpi", "mpich", 1). +default_provider_preference("pkgconfig", "pkgconf", 0). +default_provider_preference("pkgconfig", "pkg-config", 1). +default_provider_preference("szip", "libszip", 0). +default_provider_preference("szip", "libaec", 1). + +%---------------------------------------------------------------------------- +% Compiler flag defaults +%---------------------------------------------------------------------------- +flag_type("cflags"). +flag_type("cxxflags"). +flag_type("fflags"). +flag_type("ldflags"). +flag_type("ldlibs"). +flag_type("cppflags"). + + +%============================================================================ +% Package Constraints +%============================================================================ + +%---------------------------------------------------------------------------- +% Package: alsa-lib +%---------------------------------------------------------------------------- +version_declared("alsa-lib", "1.1.4.1", 0). + + +%---------------------------------------------------------------------------- +% Package: at-spi2-atk +%---------------------------------------------------------------------------- +version_declared("at-spi2-atk", "2.26.2", 0). +version_declared("at-spi2-atk", "2.26.1", 1). + +variant("at-spi2-atk", "buildtype"). +variant_single_value("at-spi2-atk", "buildtype"). +variant_default_value("at-spi2-atk", "buildtype", "release"). +variant_possible_value("at-spi2-atk", "buildtype", "debug"). +variant_possible_value("at-spi2-atk", "buildtype", "debugoptimized"). +variant_possible_value("at-spi2-atk", "buildtype", "minsize"). +variant_possible_value("at-spi2-atk", "buildtype", "plain"). +variant_possible_value("at-spi2-atk", "buildtype", "release"). + +declared_dependency("at-spi2-atk", "at-spi2-core", "build"). +declared_dependency("at-spi2-atk", "at-spi2-core", "link"). +node("at-spi2-core") :- depends_on("at-spi2-atk", "at-spi2-core"), node("at-spi2-atk"). + +declared_dependency("at-spi2-atk", "atk", "build"). +declared_dependency("at-spi2-atk", "atk", "link"). +node("atk") :- depends_on("at-spi2-atk", "atk"), node("at-spi2-atk"). +1 { version("atk", "2.28.1"); version("atk", "2.30.0") } 1 :- depends_on("at-spi2-atk", "atk"), node("at-spi2-atk"). + +declared_dependency("at-spi2-atk", "meson", "build"). +node("meson") :- depends_on("at-spi2-atk", "meson"), node("at-spi2-atk"). + +declared_dependency("at-spi2-atk", "ninja", "build"). +node("ninja") :- depends_on("at-spi2-atk", "ninja"), node("at-spi2-atk"). + +declared_dependency("at-spi2-atk", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("at-spi2-atk", "pkgconfig"), node("at-spi2-atk"). + + +%---------------------------------------------------------------------------- +% Package: at-spi2-core +%---------------------------------------------------------------------------- +version_declared("at-spi2-core", "2.28.0", 0). + +variant("at-spi2-core", "buildtype"). +variant_single_value("at-spi2-core", "buildtype"). +variant_default_value("at-spi2-core", "buildtype", "release"). +variant_possible_value("at-spi2-core", "buildtype", "debug"). +variant_possible_value("at-spi2-core", "buildtype", "debugoptimized"). +variant_possible_value("at-spi2-core", "buildtype", "minsize"). +variant_possible_value("at-spi2-core", "buildtype", "plain"). +variant_possible_value("at-spi2-core", "buildtype", "release"). + +declared_dependency("at-spi2-core", "dbus", "build"). +declared_dependency("at-spi2-core", "dbus", "link"). +node("dbus") :- depends_on("at-spi2-core", "dbus"), node("at-spi2-core"). +1 { version("dbus", "1.12.8") } 1 :- depends_on("at-spi2-core", "dbus"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "fixesproto", "build"). +node("fixesproto") :- depends_on("at-spi2-core", "fixesproto"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "gettext", "build"). +declared_dependency("at-spi2-core", "gettext", "link"). +node("gettext") :- depends_on("at-spi2-core", "gettext"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "glib", "build"). +declared_dependency("at-spi2-core", "glib", "link"). +node("glib") :- depends_on("at-spi2-core", "glib"), node("at-spi2-core"). +1 { version("glib", "2.56.1"); version("glib", "2.56.2"); version("glib", "2.56.3") } 1 :- depends_on("at-spi2-core", "glib"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "inputproto", "build"). +node("inputproto") :- depends_on("at-spi2-core", "inputproto"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "libx11", "build"). +declared_dependency("at-spi2-core", "libx11", "link"). +node("libx11") :- depends_on("at-spi2-core", "libx11"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "libxi", "build"). +declared_dependency("at-spi2-core", "libxi", "link"). +node("libxi") :- depends_on("at-spi2-core", "libxi"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "libxtst", "build"). +node("libxtst") :- depends_on("at-spi2-core", "libxtst"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "meson", "build"). +node("meson") :- depends_on("at-spi2-core", "meson"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "ninja", "build"). +node("ninja") :- depends_on("at-spi2-core", "ninja"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("at-spi2-core", "pkgconfig"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "python", "build"). +node("python") :- depends_on("at-spi2-core", "python"), node("at-spi2-core"). + +declared_dependency("at-spi2-core", "recordproto", "build"). +node("recordproto") :- depends_on("at-spi2-core", "recordproto"), node("at-spi2-core"). + + +%---------------------------------------------------------------------------- +% Package: atk +%---------------------------------------------------------------------------- +version_declared("atk", "2.30.0", 0). +version_declared("atk", "2.28.1", 1). +version_declared("atk", "2.20.0", 2). +version_declared("atk", "2.14.0", 3). + +declared_dependency("atk", "gettext", "build"). +declared_dependency("atk", "gettext", "link"). +node("gettext") :- depends_on("atk", "gettext"), node("atk"). + +declared_dependency("atk", "glib", "build"). +declared_dependency("atk", "glib", "link"). +node("glib") :- depends_on("atk", "glib"), node("atk"). + +declared_dependency("atk", "gobject-introspection", "build"). +declared_dependency("atk", "gobject-introspection", "link"). +node("gobject-introspection") :- depends_on("atk", "gobject-introspection"), node("atk"). + +declared_dependency("atk", "libffi", "build"). +declared_dependency("atk", "libffi", "link"). +node("libffi") :- depends_on("atk", "libffi"), node("atk"). + +declared_dependency("atk", "meson", "build") :- node("atk"), 1 { version("atk", "2.28.1"); version("atk", "2.30.0") } 1. +node("meson") :- depends_on("atk", "meson"), node("atk"), 1 { version("atk", "2.28.1"); version("atk", "2.30.0") } 1. +declared_dependency("atk", "meson", "build") :- node("atk"), 1 { version("atk", "2.30.0") } 1. +node("meson") :- depends_on("atk", "meson"), node("atk"), 1 { version("atk", "2.30.0") } 1. +1 { version("meson", "0.49.0"); version("meson", "0.49.1") } 1 :- depends_on("atk", "meson"), node("atk"), 1 { version("atk", "2.30.0") } 1. + +declared_dependency("atk", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("atk", "pkgconfig"), node("atk"). + + +%---------------------------------------------------------------------------- +% Package: atlas +%---------------------------------------------------------------------------- +version_declared("atlas", "3.10.3", 0). +version_declared("atlas", "3.11.41", 1). +version_declared("atlas", "3.11.39", 2). +version_declared("atlas", "3.11.34", 3). +version_declared("atlas", "3.10.2", 4). + +variant("atlas", "shared"). +variant_single_value("atlas", "shared"). +variant_default_value("atlas", "shared", "True"). +variant_possible_value("atlas", "shared", "False"). +variant_possible_value("atlas", "shared", "True"). + +variant("atlas", "threads"). +variant_single_value("atlas", "threads"). +variant_default_value("atlas", "threads", "none"). +variant_possible_value("atlas", "threads", "none"). +variant_possible_value("atlas", "threads", "pthreads"). + +variant("atlas", "tune_cpu"). +variant_single_value("atlas", "tune_cpu"). +variant_default_value("atlas", "tune_cpu", -1). +variant_possible_value("atlas", "tune_cpu", -1). + + +%---------------------------------------------------------------------------- +% Package: autoconf +%---------------------------------------------------------------------------- +version_declared("autoconf", "2.69", 0). +version_declared("autoconf", "2.62", 1). +version_declared("autoconf", "2.59", 2). +version_declared("autoconf", "2.13", 3). + +declared_dependency("autoconf", "m4", "build"). +declared_dependency("autoconf", "m4", "run"). +node("m4") :- depends_on("autoconf", "m4"), node("autoconf"). + +declared_dependency("autoconf", "perl", "build"). +declared_dependency("autoconf", "perl", "run"). +node("perl") :- depends_on("autoconf", "perl"), node("autoconf"). + + +%---------------------------------------------------------------------------- +% Package: automake +%---------------------------------------------------------------------------- +version_declared("automake", "1.16.1", 0). +version_declared("automake", "1.15.1", 1). +version_declared("automake", "1.15", 2). +version_declared("automake", "1.14.1", 3). +version_declared("automake", "1.13.4", 4). +version_declared("automake", "1.11.6", 5). + +declared_dependency("automake", "autoconf", "build"). +node("autoconf") :- depends_on("automake", "autoconf"), node("automake"). + +declared_dependency("automake", "perl", "build"). +declared_dependency("automake", "perl", "run"). +node("perl") :- depends_on("automake", "perl"), node("automake"). + + +%---------------------------------------------------------------------------- +% Package: bdftopcf +%---------------------------------------------------------------------------- +version_declared("bdftopcf", "1.0.5", 0). + +declared_dependency("bdftopcf", "fontsproto", "build"). +node("fontsproto") :- depends_on("bdftopcf", "fontsproto"), node("bdftopcf"). + +declared_dependency("bdftopcf", "libxfont", "build"). +declared_dependency("bdftopcf", "libxfont", "link"). +node("libxfont") :- depends_on("bdftopcf", "libxfont"), node("bdftopcf"). + +declared_dependency("bdftopcf", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("bdftopcf", "pkgconfig"), node("bdftopcf"). + +declared_dependency("bdftopcf", "util-macros", "build"). +node("util-macros") :- depends_on("bdftopcf", "util-macros"), node("bdftopcf"). + +declared_dependency("bdftopcf", "xproto", "build"). +node("xproto") :- depends_on("bdftopcf", "xproto"), node("bdftopcf"). + + +%---------------------------------------------------------------------------- +% Package: bdw-gc +%---------------------------------------------------------------------------- +version_declared("bdw-gc", "8.0.0", 0). +version_declared("bdw-gc", "7.6.0", 1). +version_declared("bdw-gc", "7.4.4", 2). + +variant("bdw-gc", "libatomic-ops"). +variant_single_value("bdw-gc", "libatomic-ops"). +variant_default_value("bdw-gc", "libatomic-ops", "True"). +variant_possible_value("bdw-gc", "libatomic-ops", "False"). +variant_possible_value("bdw-gc", "libatomic-ops", "True"). + +variant("bdw-gc", "threads"). +variant_single_value("bdw-gc", "threads"). +variant_default_value("bdw-gc", "threads", "none"). +variant_possible_value("bdw-gc", "threads", "dgux386"). +variant_possible_value("bdw-gc", "threads", "none"). +variant_possible_value("bdw-gc", "threads", "posix"). + +declared_dependency("bdw-gc", "libatomic-ops", "build") :- node("bdw-gc"), variant_value("bdw-gc", "libatomic-ops", "True"). +declared_dependency("bdw-gc", "libatomic-ops", "link") :- node("bdw-gc"), variant_value("bdw-gc", "libatomic-ops", "True"). +node("libatomic-ops") :- depends_on("bdw-gc", "libatomic-ops"), node("bdw-gc"), variant_value("bdw-gc", "libatomic-ops", "True"). + + +%---------------------------------------------------------------------------- +% Package: binutils +%---------------------------------------------------------------------------- +version_declared("binutils", "2.33.1", 0). +version_declared("binutils", "2.32", 1). +version_declared("binutils", "2.31.1", 2). +version_declared("binutils", "2.29.1", 3). +version_declared("binutils", "2.28", 4). +version_declared("binutils", "2.27", 5). +version_declared("binutils", "2.26", 6). +version_declared("binutils", "2.25.1", 7). +version_declared("binutils", "2.25", 8). +version_declared("binutils", "2.24", 9). +version_declared("binutils", "2.23.2", 10). +version_declared("binutils", "2.20.1", 11). + +variant("binutils", "gold"). +variant_single_value("binutils", "gold"). +variant_default_value("binutils", "gold", "True"). +variant_possible_value("binutils", "gold", "False"). +variant_possible_value("binutils", "gold", "True"). + +variant("binutils", "headers"). +variant_single_value("binutils", "headers"). +variant_default_value("binutils", "headers", "False"). +variant_possible_value("binutils", "headers", "False"). +variant_possible_value("binutils", "headers", "True"). + +variant("binutils", "libiberty"). +variant_single_value("binutils", "libiberty"). +variant_default_value("binutils", "libiberty", "False"). +variant_possible_value("binutils", "libiberty", "False"). +variant_possible_value("binutils", "libiberty", "True"). + +variant("binutils", "nls"). +variant_single_value("binutils", "nls"). +variant_default_value("binutils", "nls", "True"). +variant_possible_value("binutils", "nls", "False"). +variant_possible_value("binutils", "nls", "True"). + +variant("binutils", "plugins"). +variant_single_value("binutils", "plugins"). +variant_default_value("binutils", "plugins", "False"). +variant_possible_value("binutils", "plugins", "False"). +variant_possible_value("binutils", "plugins", "True"). + +declared_dependency("binutils", "bison", "build") :- node("binutils"), 1 { version("binutils", "2.20.1"); version("binutils", "2.23.2"); version("binutils", "2.24"); version("binutils", "2.25"); version("binutils", "2.25.1"); version("binutils", "2.26"); version("binutils", "2.27"); version("binutils", "2.28"); version("binutils", "2.29.1") } 1, variant_value("binutils", "gold", "True"). +node("bison") :- depends_on("binutils", "bison"), node("binutils"), 1 { version("binutils", "2.20.1"); version("binutils", "2.23.2"); version("binutils", "2.24"); version("binutils", "2.25"); version("binutils", "2.25.1"); version("binutils", "2.26"); version("binutils", "2.27"); version("binutils", "2.28"); version("binutils", "2.29.1") } 1, variant_value("binutils", "gold", "True"). + +declared_dependency("binutils", "gettext", "build") :- node("binutils"), variant_value("binutils", "nls", "True"). +declared_dependency("binutils", "gettext", "link") :- node("binutils"), variant_value("binutils", "nls", "True"). +node("gettext") :- depends_on("binutils", "gettext"), node("binutils"), variant_value("binutils", "nls", "True"). + +declared_dependency("binutils", "m4", "build") :- node("binutils"), 1 { version("binutils", "2.20.1"); version("binutils", "2.23.2"); version("binutils", "2.24"); version("binutils", "2.25"); version("binutils", "2.25.1"); version("binutils", "2.26"); version("binutils", "2.27"); version("binutils", "2.28"); version("binutils", "2.29.1") } 1, variant_value("binutils", "gold", "True"). +node("m4") :- depends_on("binutils", "m4"), node("binutils"), 1 { version("binutils", "2.20.1"); version("binutils", "2.23.2"); version("binutils", "2.24"); version("binutils", "2.25"); version("binutils", "2.25.1"); version("binutils", "2.26"); version("binutils", "2.27"); version("binutils", "2.28"); version("binutils", "2.29.1") } 1, variant_value("binutils", "gold", "True"). + +declared_dependency("binutils", "zlib", "build"). +declared_dependency("binutils", "zlib", "link"). +node("zlib") :- depends_on("binutils", "zlib"), node("binutils"). + + +%---------------------------------------------------------------------------- +% Package: bison +%---------------------------------------------------------------------------- +version_declared("bison", "3.4.2", 0). +version_declared("bison", "3.0.5", 1). +version_declared("bison", "3.0.4", 2). +version_declared("bison", "2.7", 3). + +declared_dependency("bison", "diffutils", "build"). +node("diffutils") :- depends_on("bison", "diffutils"), node("bison"). + +declared_dependency("bison", "help2man", "build"). +node("help2man") :- depends_on("bison", "help2man"), node("bison"). + +declared_dependency("bison", "m4", "build"). +declared_dependency("bison", "m4", "run"). +node("m4") :- depends_on("bison", "m4"), node("bison"). + +declared_dependency("bison", "perl", "build"). +node("perl") :- depends_on("bison", "perl"), node("bison"). + + +%---------------------------------------------------------------------------- +% Package: blis +%---------------------------------------------------------------------------- +version_declared("blis", "0.6.1", 0). +version_declared("blis", "0.6.0", 1). +version_declared("blis", "0.5.0", 2). +version_declared("blis", "0.4.0", 3). +version_declared("blis", "0.3.2", 4). +version_declared("blis", "0.3.1", 5). +version_declared("blis", "0.3.0", 6). +version_declared("blis", "0.2.2", 7). +version_declared("blis", "master", 8). + +variant("blis", "blas"). +variant_single_value("blis", "blas"). +variant_default_value("blis", "blas", "True"). +variant_possible_value("blis", "blas", "False"). +variant_possible_value("blis", "blas", "True"). + +variant("blis", "cblas"). +variant_single_value("blis", "cblas"). +variant_default_value("blis", "cblas", "True"). +variant_possible_value("blis", "cblas", "False"). +variant_possible_value("blis", "cblas", "True"). + +variant("blis", "shared"). +variant_single_value("blis", "shared"). +variant_default_value("blis", "shared", "True"). +variant_possible_value("blis", "shared", "False"). +variant_possible_value("blis", "shared", "True"). + +variant("blis", "static"). +variant_single_value("blis", "static"). +variant_default_value("blis", "static", "True"). +variant_possible_value("blis", "static", "False"). +variant_possible_value("blis", "static", "True"). + +variant("blis", "threads"). +variant_single_value("blis", "threads"). +variant_default_value("blis", "threads", "none"). +variant_possible_value("blis", "threads", "none"). +variant_possible_value("blis", "threads", "openmp"). +variant_possible_value("blis", "threads", "pthreads"). + +declared_dependency("blis", "python", "build"). +declared_dependency("blis", "python", "run"). +node("python") :- depends_on("blis", "python"), node("blis"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("blis", "python"), node("blis"). + + +%---------------------------------------------------------------------------- +% Package: boost +%---------------------------------------------------------------------------- +version_declared("boost", "1.72.0", 0). +version_declared("boost", "1.71.0", 1). +version_declared("boost", "1.70.0", 2). +version_declared("boost", "1.69.0", 3). +version_declared("boost", "1.68.0", 4). +version_declared("boost", "1.67.0", 5). +version_declared("boost", "1.66.0", 6). +version_declared("boost", "1.65.1", 7). +version_declared("boost", "1.65.0", 8). +version_declared("boost", "1.64.0", 9). +version_declared("boost", "1.63.0", 10). +version_declared("boost", "1.62.0", 11). +version_declared("boost", "1.61.0", 12). +version_declared("boost", "1.60.0", 13). +version_declared("boost", "1.59.0", 14). +version_declared("boost", "1.58.0", 15). +version_declared("boost", "1.57.0", 16). +version_declared("boost", "1.56.0", 17). +version_declared("boost", "1.55.0", 18). +version_declared("boost", "1.54.0", 19). +version_declared("boost", "1.53.0", 20). +version_declared("boost", "1.52.0", 21). +version_declared("boost", "1.51.0", 22). +version_declared("boost", "1.50.0", 23). +version_declared("boost", "1.49.0", 24). +version_declared("boost", "1.48.0", 25). +version_declared("boost", "1.47.0", 26). +version_declared("boost", "1.46.1", 27). +version_declared("boost", "1.46.0", 28). +version_declared("boost", "1.45.0", 29). +version_declared("boost", "1.44.0", 30). +version_declared("boost", "1.43.0", 31). +version_declared("boost", "1.42.0", 32). +version_declared("boost", "1.41.0", 33). +version_declared("boost", "1.40.0", 34). +version_declared("boost", "1.39.0", 35). +version_declared("boost", "1.38.0", 36). +version_declared("boost", "1.37.0", 37). +version_declared("boost", "1.36.0", 38). +version_declared("boost", "1.35.0", 39). +version_declared("boost", "1.34.1", 40). +version_declared("boost", "1.34.0", 41). +version_declared("boost", "develop", 42). + +variant("boost", "atomic"). +variant_single_value("boost", "atomic"). +variant_default_value("boost", "atomic", "True"). +variant_possible_value("boost", "atomic", "False"). +variant_possible_value("boost", "atomic", "True"). + +variant("boost", "chrono"). +variant_single_value("boost", "chrono"). +variant_default_value("boost", "chrono", "True"). +variant_possible_value("boost", "chrono", "False"). +variant_possible_value("boost", "chrono", "True"). + +variant("boost", "clanglibcpp"). +variant_single_value("boost", "clanglibcpp"). +variant_default_value("boost", "clanglibcpp", "False"). +variant_possible_value("boost", "clanglibcpp", "False"). +variant_possible_value("boost", "clanglibcpp", "True"). + +variant("boost", "context"). +variant_single_value("boost", "context"). +variant_default_value("boost", "context", "False"). +variant_possible_value("boost", "context", "False"). +variant_possible_value("boost", "context", "True"). + +variant("boost", "coroutine"). +variant_single_value("boost", "coroutine"). +variant_default_value("boost", "coroutine", "False"). +variant_possible_value("boost", "coroutine", "False"). +variant_possible_value("boost", "coroutine", "True"). + +variant("boost", "cxxstd"). +variant_single_value("boost", "cxxstd"). +variant_default_value("boost", "cxxstd", "98"). +variant_possible_value("boost", "cxxstd", "11"). +variant_possible_value("boost", "cxxstd", "14"). +variant_possible_value("boost", "cxxstd", "17"). +variant_possible_value("boost", "cxxstd", "98"). + +variant("boost", "date_time"). +variant_single_value("boost", "date_time"). +variant_default_value("boost", "date_time", "True"). +variant_possible_value("boost", "date_time", "False"). +variant_possible_value("boost", "date_time", "True"). + +variant("boost", "debug"). +variant_single_value("boost", "debug"). +variant_default_value("boost", "debug", "False"). +variant_possible_value("boost", "debug", "False"). +variant_possible_value("boost", "debug", "True"). + +variant("boost", "exception"). +variant_single_value("boost", "exception"). +variant_default_value("boost", "exception", "True"). +variant_possible_value("boost", "exception", "False"). +variant_possible_value("boost", "exception", "True"). + +variant("boost", "fiber"). +variant_single_value("boost", "fiber"). +variant_default_value("boost", "fiber", "False"). +variant_possible_value("boost", "fiber", "False"). +variant_possible_value("boost", "fiber", "True"). + +variant("boost", "filesystem"). +variant_single_value("boost", "filesystem"). +variant_default_value("boost", "filesystem", "True"). +variant_possible_value("boost", "filesystem", "False"). +variant_possible_value("boost", "filesystem", "True"). + +variant("boost", "graph"). +variant_single_value("boost", "graph"). +variant_default_value("boost", "graph", "True"). +variant_possible_value("boost", "graph", "False"). +variant_possible_value("boost", "graph", "True"). + +variant("boost", "icu"). +variant_single_value("boost", "icu"). +variant_default_value("boost", "icu", "False"). +variant_possible_value("boost", "icu", "False"). +variant_possible_value("boost", "icu", "True"). + +variant("boost", "iostreams"). +variant_single_value("boost", "iostreams"). +variant_default_value("boost", "iostreams", "True"). +variant_possible_value("boost", "iostreams", "False"). +variant_possible_value("boost", "iostreams", "True"). + +variant("boost", "locale"). +variant_single_value("boost", "locale"). +variant_default_value("boost", "locale", "True"). +variant_possible_value("boost", "locale", "False"). +variant_possible_value("boost", "locale", "True"). + +variant("boost", "log"). +variant_single_value("boost", "log"). +variant_default_value("boost", "log", "True"). +variant_possible_value("boost", "log", "False"). +variant_possible_value("boost", "log", "True"). + +variant("boost", "math"). +variant_single_value("boost", "math"). +variant_default_value("boost", "math", "True"). +variant_possible_value("boost", "math", "False"). +variant_possible_value("boost", "math", "True"). + +variant("boost", "mpi"). +variant_single_value("boost", "mpi"). +variant_default_value("boost", "mpi", "False"). +variant_possible_value("boost", "mpi", "False"). +variant_possible_value("boost", "mpi", "True"). + +variant("boost", "multithreaded"). +variant_single_value("boost", "multithreaded"). +variant_default_value("boost", "multithreaded", "True"). +variant_possible_value("boost", "multithreaded", "False"). +variant_possible_value("boost", "multithreaded", "True"). + +variant("boost", "numpy"). +variant_single_value("boost", "numpy"). +variant_default_value("boost", "numpy", "False"). +variant_possible_value("boost", "numpy", "False"). +variant_possible_value("boost", "numpy", "True"). + +variant("boost", "pic"). +variant_single_value("boost", "pic"). +variant_default_value("boost", "pic", "False"). +variant_possible_value("boost", "pic", "False"). +variant_possible_value("boost", "pic", "True"). + +variant("boost", "program_options"). +variant_single_value("boost", "program_options"). +variant_default_value("boost", "program_options", "True"). +variant_possible_value("boost", "program_options", "False"). +variant_possible_value("boost", "program_options", "True"). + +variant("boost", "python"). +variant_single_value("boost", "python"). +variant_default_value("boost", "python", "False"). +variant_possible_value("boost", "python", "False"). +variant_possible_value("boost", "python", "True"). + +variant("boost", "random"). +variant_single_value("boost", "random"). +variant_default_value("boost", "random", "True"). +variant_possible_value("boost", "random", "False"). +variant_possible_value("boost", "random", "True"). + +variant("boost", "regex"). +variant_single_value("boost", "regex"). +variant_default_value("boost", "regex", "True"). +variant_possible_value("boost", "regex", "False"). +variant_possible_value("boost", "regex", "True"). + +variant("boost", "serialization"). +variant_single_value("boost", "serialization"). +variant_default_value("boost", "serialization", "True"). +variant_possible_value("boost", "serialization", "False"). +variant_possible_value("boost", "serialization", "True"). + +variant("boost", "shared"). +variant_single_value("boost", "shared"). +variant_default_value("boost", "shared", "True"). +variant_possible_value("boost", "shared", "False"). +variant_possible_value("boost", "shared", "True"). + +variant("boost", "signals"). +variant_single_value("boost", "signals"). +variant_default_value("boost", "signals", "True"). +variant_possible_value("boost", "signals", "False"). +variant_possible_value("boost", "signals", "True"). + +variant("boost", "singlethreaded"). +variant_single_value("boost", "singlethreaded"). +variant_default_value("boost", "singlethreaded", "False"). +variant_possible_value("boost", "singlethreaded", "False"). +variant_possible_value("boost", "singlethreaded", "True"). + +variant("boost", "system"). +variant_single_value("boost", "system"). +variant_default_value("boost", "system", "True"). +variant_possible_value("boost", "system", "False"). +variant_possible_value("boost", "system", "True"). + +variant("boost", "taggedlayout"). +variant_single_value("boost", "taggedlayout"). +variant_default_value("boost", "taggedlayout", "False"). +variant_possible_value("boost", "taggedlayout", "False"). +variant_possible_value("boost", "taggedlayout", "True"). + +variant("boost", "test"). +variant_single_value("boost", "test"). +variant_default_value("boost", "test", "True"). +variant_possible_value("boost", "test", "False"). +variant_possible_value("boost", "test", "True"). + +variant("boost", "thread"). +variant_single_value("boost", "thread"). +variant_default_value("boost", "thread", "True"). +variant_possible_value("boost", "thread", "False"). +variant_possible_value("boost", "thread", "True"). + +variant("boost", "timer"). +variant_single_value("boost", "timer"). +variant_default_value("boost", "timer", "True"). +variant_possible_value("boost", "timer", "False"). +variant_possible_value("boost", "timer", "True"). + +variant("boost", "versionedlayout"). +variant_single_value("boost", "versionedlayout"). +variant_default_value("boost", "versionedlayout", "False"). +variant_possible_value("boost", "versionedlayout", "False"). +variant_possible_value("boost", "versionedlayout", "True"). + +variant("boost", "visibility"). +variant_single_value("boost", "visibility"). +variant_default_value("boost", "visibility", "hidden"). +variant_possible_value("boost", "visibility", "global"). +variant_possible_value("boost", "visibility", "hidden"). +variant_possible_value("boost", "visibility", "protected"). + +variant("boost", "wave"). +variant_single_value("boost", "wave"). +variant_default_value("boost", "wave", "True"). +variant_possible_value("boost", "wave", "False"). +variant_possible_value("boost", "wave", "True"). + +declared_dependency("boost", "bzip2", "build") :- node("boost"), variant_value("boost", "iostreams", "True"). +declared_dependency("boost", "bzip2", "link") :- node("boost"), variant_value("boost", "iostreams", "True"). +node("bzip2") :- depends_on("boost", "bzip2"), node("boost"), variant_value("boost", "iostreams", "True"). + +declared_dependency("boost", "icu4c", "build") :- node("boost"), variant_value("boost", "icu", "True"). +declared_dependency("boost", "icu4c", "link") :- node("boost"), variant_value("boost", "icu", "True"). +node("icu4c") :- depends_on("boost", "icu4c"), node("boost"), variant_value("boost", "icu", "True"). + +declared_dependency("boost", "mpi", "build") :- node("boost"), variant_value("boost", "mpi", "True"). +declared_dependency("boost", "mpi", "link") :- node("boost"), variant_value("boost", "mpi", "True"). +node("mpi") :- depends_on("boost", "mpi"), node("boost"), variant_value("boost", "mpi", "True"). + +declared_dependency("boost", "py-numpy", "build") :- node("boost"), variant_value("boost", "numpy", "True"). +declared_dependency("boost", "py-numpy", "run") :- node("boost"), variant_value("boost", "numpy", "True"). +node("py-numpy") :- depends_on("boost", "py-numpy"), node("boost"), variant_value("boost", "numpy", "True"). + +declared_dependency("boost", "python", "build") :- node("boost"), variant_value("boost", "python", "True"). +declared_dependency("boost", "python", "link") :- node("boost"), variant_value("boost", "python", "True"). +node("python") :- depends_on("boost", "python"), node("boost"), variant_value("boost", "python", "True"). + +declared_dependency("boost", "zlib", "build") :- node("boost"), variant_value("boost", "iostreams", "True"). +declared_dependency("boost", "zlib", "link") :- node("boost"), variant_value("boost", "iostreams", "True"). +node("zlib") :- depends_on("boost", "zlib"), node("boost"), variant_value("boost", "iostreams", "True"). + + +%---------------------------------------------------------------------------- +% Package: bzip2 +%---------------------------------------------------------------------------- +version_declared("bzip2", "1.0.8", 0). +version_declared("bzip2", "1.0.7", 1). +version_declared("bzip2", "1.0.6", 2). + +variant("bzip2", "shared"). +variant_single_value("bzip2", "shared"). +variant_default_value("bzip2", "shared", "True"). +variant_possible_value("bzip2", "shared", "False"). +variant_possible_value("bzip2", "shared", "True"). + +declared_dependency("bzip2", "diffutils", "build"). +node("diffutils") :- depends_on("bzip2", "diffutils"), node("bzip2"). + + +%---------------------------------------------------------------------------- +% Package: cairo +%---------------------------------------------------------------------------- +version_declared("cairo", "1.16.0", 0). +version_declared("cairo", "1.14.12", 1). +version_declared("cairo", "1.14.8", 2). +version_declared("cairo", "1.14.0", 3). + +variant("cairo", "X"). +variant_single_value("cairo", "X"). +variant_default_value("cairo", "X", "False"). +variant_possible_value("cairo", "X", "False"). +variant_possible_value("cairo", "X", "True"). + +variant("cairo", "fc"). +variant_single_value("cairo", "fc"). +variant_default_value("cairo", "fc", "False"). +variant_possible_value("cairo", "fc", "False"). +variant_possible_value("cairo", "fc", "True"). + +variant("cairo", "ft"). +variant_single_value("cairo", "ft"). +variant_default_value("cairo", "ft", "False"). +variant_possible_value("cairo", "ft", "False"). +variant_possible_value("cairo", "ft", "True"). + +variant("cairo", "gobject"). +variant_single_value("cairo", "gobject"). +variant_default_value("cairo", "gobject", "False"). +variant_possible_value("cairo", "gobject", "False"). +variant_possible_value("cairo", "gobject", "True"). + +variant("cairo", "pdf"). +variant_single_value("cairo", "pdf"). +variant_default_value("cairo", "pdf", "False"). +variant_possible_value("cairo", "pdf", "False"). +variant_possible_value("cairo", "pdf", "True"). + +variant("cairo", "png"). +variant_single_value("cairo", "png"). +variant_default_value("cairo", "png", "False"). +variant_possible_value("cairo", "png", "False"). +variant_possible_value("cairo", "png", "True"). + +variant("cairo", "svg"). +variant_single_value("cairo", "svg"). +variant_default_value("cairo", "svg", "False"). +variant_possible_value("cairo", "svg", "False"). +variant_possible_value("cairo", "svg", "True"). + +declared_dependency("cairo", "autoconf", "build"). +node("autoconf") :- depends_on("cairo", "autoconf"), node("cairo"). + +declared_dependency("cairo", "automake", "build"). +node("automake") :- depends_on("cairo", "automake"), node("cairo"). + +declared_dependency("cairo", "fontconfig", "build") :- node("cairo"), variant_value("cairo", "fc", "True"). +declared_dependency("cairo", "fontconfig", "link") :- node("cairo"), variant_value("cairo", "fc", "True"). +node("fontconfig") :- depends_on("cairo", "fontconfig"), node("cairo"), variant_value("cairo", "fc", "True"). + +declared_dependency("cairo", "freetype", "build") :- node("cairo"), variant_value("cairo", "ft", "True"). +declared_dependency("cairo", "freetype", "link") :- node("cairo"), variant_value("cairo", "ft", "True"). +node("freetype") :- depends_on("cairo", "freetype"), node("cairo"), variant_value("cairo", "ft", "True"). + +declared_dependency("cairo", "glib", "build"). +declared_dependency("cairo", "glib", "link"). +node("glib") :- depends_on("cairo", "glib"), node("cairo"). + +declared_dependency("cairo", "libpng", "build") :- node("cairo"), variant_value("cairo", "png", "True"). +declared_dependency("cairo", "libpng", "link") :- node("cairo"), variant_value("cairo", "png", "True"). +node("libpng") :- depends_on("cairo", "libpng"), node("cairo"), variant_value("cairo", "png", "True"). + +declared_dependency("cairo", "librsvg", "build") :- node("cairo"), variant_value("cairo", "svg", "True"). +declared_dependency("cairo", "librsvg", "link") :- node("cairo"), variant_value("cairo", "svg", "True"). +node("librsvg") :- depends_on("cairo", "librsvg"), node("cairo"), variant_value("cairo", "svg", "True"). + +declared_dependency("cairo", "libtool", "build"). +node("libtool") :- depends_on("cairo", "libtool"), node("cairo"). + +declared_dependency("cairo", "libx11", "build") :- node("cairo"), variant_value("cairo", "X", "True"). +declared_dependency("cairo", "libx11", "link") :- node("cairo"), variant_value("cairo", "X", "True"). +node("libx11") :- depends_on("cairo", "libx11"), node("cairo"), variant_value("cairo", "X", "True"). + +declared_dependency("cairo", "libxcb", "build") :- node("cairo"), variant_value("cairo", "X", "True"). +declared_dependency("cairo", "libxcb", "link") :- node("cairo"), variant_value("cairo", "X", "True"). +node("libxcb") :- depends_on("cairo", "libxcb"), node("cairo"), variant_value("cairo", "X", "True"). + +declared_dependency("cairo", "libxext", "build") :- node("cairo"), variant_value("cairo", "X", "True"). +declared_dependency("cairo", "libxext", "link") :- node("cairo"), variant_value("cairo", "X", "True"). +node("libxext") :- depends_on("cairo", "libxext"), node("cairo"), variant_value("cairo", "X", "True"). + +declared_dependency("cairo", "libxrender", "build") :- node("cairo"), variant_value("cairo", "X", "True"). +declared_dependency("cairo", "libxrender", "link") :- node("cairo"), variant_value("cairo", "X", "True"). +node("libxrender") :- depends_on("cairo", "libxrender"), node("cairo"), variant_value("cairo", "X", "True"). + +declared_dependency("cairo", "m4", "build"). +node("m4") :- depends_on("cairo", "m4"), node("cairo"). + +declared_dependency("cairo", "pixman", "build"). +declared_dependency("cairo", "pixman", "link"). +node("pixman") :- depends_on("cairo", "pixman"), node("cairo"). + +declared_dependency("cairo", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("cairo", "pkgconfig"), node("cairo"). + +declared_dependency("cairo", "python", "build") :- node("cairo"), variant_value("cairo", "X", "True"). +node("python") :- depends_on("cairo", "python"), node("cairo"), variant_value("cairo", "X", "True"). + + +%---------------------------------------------------------------------------- +% Package: charmpp +%---------------------------------------------------------------------------- +version_declared("charmpp", "6.9.0", 0). +version_declared("charmpp", "6.8.2", 1). +version_declared("charmpp", "6.8.1", 2). +version_declared("charmpp", "6.8.0", 3). +version_declared("charmpp", "6.7.1", 4). +version_declared("charmpp", "6.7.0", 5). +version_declared("charmpp", "6.6.1", 6). +version_declared("charmpp", "6.6.0", 7). +version_declared("charmpp", "6.5.1", 8). +version_declared("charmpp", "develop", 9). + +variant("charmpp", "backend"). +variant_single_value("charmpp", "backend"). +variant_default_value("charmpp", "backend", "netlrts"). +variant_possible_value("charmpp", "backend", "gni"). +variant_possible_value("charmpp", "backend", "mpi"). +variant_possible_value("charmpp", "backend", "multicore"). +variant_possible_value("charmpp", "backend", "netlrts"). +variant_possible_value("charmpp", "backend", "ofi"). +variant_possible_value("charmpp", "backend", "pami"). +variant_possible_value("charmpp", "backend", "pamilrts"). +variant_possible_value("charmpp", "backend", "verbs"). + +variant("charmpp", "build-target"). +variant_single_value("charmpp", "build-target"). +variant_default_value("charmpp", "build-target", "LIBS"). +variant_possible_value("charmpp", "build-target", "AMPI"). +variant_possible_value("charmpp", "build-target", "LIBS"). +variant_possible_value("charmpp", "build-target", "charm++"). + +variant("charmpp", "cuda"). +variant_single_value("charmpp", "cuda"). +variant_default_value("charmpp", "cuda", "False"). +variant_possible_value("charmpp", "cuda", "False"). +variant_possible_value("charmpp", "cuda", "True"). + +variant("charmpp", "omp"). +variant_single_value("charmpp", "omp"). +variant_default_value("charmpp", "omp", "False"). +variant_possible_value("charmpp", "omp", "False"). +variant_possible_value("charmpp", "omp", "True"). + +variant("charmpp", "papi"). +variant_single_value("charmpp", "papi"). +variant_default_value("charmpp", "papi", "False"). +variant_possible_value("charmpp", "papi", "False"). +variant_possible_value("charmpp", "papi", "True"). + +variant("charmpp", "production"). +variant_single_value("charmpp", "production"). +variant_default_value("charmpp", "production", "True"). +variant_possible_value("charmpp", "production", "False"). +variant_possible_value("charmpp", "production", "True"). + +variant("charmpp", "pthreads"). +variant_single_value("charmpp", "pthreads"). +variant_default_value("charmpp", "pthreads", "False"). +variant_possible_value("charmpp", "pthreads", "False"). +variant_possible_value("charmpp", "pthreads", "True"). + +variant("charmpp", "shared"). +variant_single_value("charmpp", "shared"). +variant_default_value("charmpp", "shared", "True"). +variant_possible_value("charmpp", "shared", "False"). +variant_possible_value("charmpp", "shared", "True"). + +variant("charmpp", "smp"). +variant_single_value("charmpp", "smp"). +variant_default_value("charmpp", "smp", "True"). +variant_possible_value("charmpp", "smp", "False"). +variant_possible_value("charmpp", "smp", "True"). + +variant("charmpp", "syncft"). +variant_single_value("charmpp", "syncft"). +variant_default_value("charmpp", "syncft", "False"). +variant_possible_value("charmpp", "syncft", "False"). +variant_possible_value("charmpp", "syncft", "True"). + +variant("charmpp", "tcp"). +variant_single_value("charmpp", "tcp"). +variant_default_value("charmpp", "tcp", "False"). +variant_possible_value("charmpp", "tcp", "False"). +variant_possible_value("charmpp", "tcp", "True"). + +variant("charmpp", "tracing"). +variant_single_value("charmpp", "tracing"). +variant_default_value("charmpp", "tracing", "False"). +variant_possible_value("charmpp", "tracing", "False"). +variant_possible_value("charmpp", "tracing", "True"). + +declared_dependency("charmpp", "autoconf", "build") :- node("charmpp"), 1 { version("charmpp", "develop") } 1. +declared_dependency("charmpp", "autoconf", "link") :- node("charmpp"), 1 { version("charmpp", "develop") } 1. +node("autoconf") :- depends_on("charmpp", "autoconf"), node("charmpp"), 1 { version("charmpp", "develop") } 1. + +declared_dependency("charmpp", "automake", "build") :- node("charmpp"), 1 { version("charmpp", "develop") } 1. +declared_dependency("charmpp", "automake", "link") :- node("charmpp"), 1 { version("charmpp", "develop") } 1. +node("automake") :- depends_on("charmpp", "automake"), node("charmpp"), 1 { version("charmpp", "develop") } 1. + +declared_dependency("charmpp", "cuda", "build") :- node("charmpp"), variant_value("charmpp", "cuda", "True"). +declared_dependency("charmpp", "cuda", "link") :- node("charmpp"), variant_value("charmpp", "cuda", "True"). +node("cuda") :- depends_on("charmpp", "cuda"), node("charmpp"), variant_value("charmpp", "cuda", "True"). + +declared_dependency("charmpp", "mpi", "build") :- node("charmpp"), variant_value("charmpp", "backend", "mpi"). +declared_dependency("charmpp", "mpi", "link") :- node("charmpp"), variant_value("charmpp", "backend", "mpi"). +node("mpi") :- depends_on("charmpp", "mpi"), node("charmpp"), variant_value("charmpp", "backend", "mpi"). + +declared_dependency("charmpp", "papi", "build") :- node("charmpp"), variant_value("charmpp", "papi", "True"). +declared_dependency("charmpp", "papi", "link") :- node("charmpp"), variant_value("charmpp", "papi", "True"). +node("papi") :- depends_on("charmpp", "papi"), node("charmpp"), variant_value("charmpp", "papi", "True"). + + +%---------------------------------------------------------------------------- +% Package: cmake +%---------------------------------------------------------------------------- +version_declared("cmake", "3.16.2", 0). +version_declared("cmake", "3.16.1", 1). +version_declared("cmake", "3.16.0", 2). +version_declared("cmake", "3.15.5", 3). +version_declared("cmake", "3.15.4", 4). +version_declared("cmake", "3.15.3", 5). +version_declared("cmake", "3.15.2", 6). +version_declared("cmake", "3.15.1", 7). +version_declared("cmake", "3.15.0", 8). +version_declared("cmake", "3.14.5", 9). +version_declared("cmake", "3.14.4", 10). +version_declared("cmake", "3.14.3", 11). +version_declared("cmake", "3.14.2", 12). +version_declared("cmake", "3.14.1", 13). +version_declared("cmake", "3.14.0", 14). +version_declared("cmake", "3.13.4", 15). +version_declared("cmake", "3.13.3", 16). +version_declared("cmake", "3.13.2", 17). +version_declared("cmake", "3.13.1", 18). +version_declared("cmake", "3.13.0", 19). +version_declared("cmake", "3.12.4", 20). +version_declared("cmake", "3.12.3", 21). +version_declared("cmake", "3.12.2", 22). +version_declared("cmake", "3.12.1", 23). +version_declared("cmake", "3.12.0", 24). +version_declared("cmake", "3.11.4", 25). +version_declared("cmake", "3.11.3", 26). +version_declared("cmake", "3.11.2", 27). +version_declared("cmake", "3.11.1", 28). +version_declared("cmake", "3.11.0", 29). +version_declared("cmake", "3.10.3", 30). +version_declared("cmake", "3.10.2", 31). +version_declared("cmake", "3.10.1", 32). +version_declared("cmake", "3.10.0", 33). +version_declared("cmake", "3.9.6", 34). +version_declared("cmake", "3.9.4", 35). +version_declared("cmake", "3.9.0", 36). +version_declared("cmake", "3.8.2", 37). +version_declared("cmake", "3.8.1", 38). +version_declared("cmake", "3.8.0", 39). +version_declared("cmake", "3.7.2", 40). +version_declared("cmake", "3.7.1", 41). +version_declared("cmake", "3.6.1", 42). +version_declared("cmake", "3.6.0", 43). +version_declared("cmake", "3.5.2", 44). +version_declared("cmake", "3.5.1", 45). +version_declared("cmake", "3.5.0", 46). +version_declared("cmake", "3.4.3", 47). +version_declared("cmake", "3.4.0", 48). +version_declared("cmake", "3.3.1", 49). +version_declared("cmake", "3.1.0", 50). +version_declared("cmake", "3.0.2", 51). +version_declared("cmake", "2.8.10.2", 52). + +variant("cmake", "doc"). +variant_single_value("cmake", "doc"). +variant_default_value("cmake", "doc", "False"). +variant_possible_value("cmake", "doc", "False"). +variant_possible_value("cmake", "doc", "True"). + +variant("cmake", "ncurses"). +variant_single_value("cmake", "ncurses"). +variant_default_value("cmake", "ncurses", "True"). +variant_possible_value("cmake", "ncurses", "False"). +variant_possible_value("cmake", "ncurses", "True"). + +variant("cmake", "openssl"). +variant_single_value("cmake", "openssl"). +variant_default_value("cmake", "openssl", "True"). +variant_possible_value("cmake", "openssl", "False"). +variant_possible_value("cmake", "openssl", "True"). + +variant("cmake", "ownlibs"). +variant_single_value("cmake", "ownlibs"). +variant_default_value("cmake", "ownlibs", "True"). +variant_possible_value("cmake", "ownlibs", "False"). +variant_possible_value("cmake", "ownlibs", "True"). + +variant("cmake", "qt"). +variant_single_value("cmake", "qt"). +variant_default_value("cmake", "qt", "False"). +variant_possible_value("cmake", "qt", "False"). +variant_possible_value("cmake", "qt", "True"). + +declared_dependency("cmake", "bzip2", "build") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "bzip2", "link") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +node("bzip2") :- depends_on("cmake", "bzip2"), node("cmake"), variant_value("cmake", "ownlibs", "False"). + +declared_dependency("cmake", "curl", "build") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "curl", "link") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +node("curl") :- depends_on("cmake", "curl"), node("cmake"), variant_value("cmake", "ownlibs", "False"). + +declared_dependency("cmake", "expat", "build") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "expat", "link") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +node("expat") :- depends_on("cmake", "expat"), node("cmake"), variant_value("cmake", "ownlibs", "False"). + +declared_dependency("cmake", "libarchive", "build") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "libarchive", "link") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +node("libarchive") :- depends_on("cmake", "libarchive"), node("cmake"), variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "libarchive", "build") :- node("cmake"), 1 { version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "libarchive", "link") :- node("cmake"), 1 { version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). +node("libarchive") :- depends_on("cmake", "libarchive"), node("cmake"), 1 { version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). +1 { version("libarchive", "3.4.1") } 1 :- depends_on("cmake", "libarchive"), node("cmake"), 1 { version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). + +declared_dependency("cmake", "libuv", "build") :- node("cmake"), 1 { version("cmake", "3.7.1"); version("cmake", "3.7.2"); version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3") } 1, variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "libuv", "link") :- node("cmake"), 1 { version("cmake", "3.7.1"); version("cmake", "3.7.2"); version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3") } 1, variant_value("cmake", "ownlibs", "False"). +node("libuv") :- depends_on("cmake", "libuv"), node("cmake"), 1 { version("cmake", "3.7.1"); version("cmake", "3.7.2"); version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3") } 1, variant_value("cmake", "ownlibs", "False"). +1 { version("libuv", "1.9.0"); version("libuv", "1.10.0") } 1 :- depends_on("cmake", "libuv"), node("cmake"), 1 { version("cmake", "3.7.1"); version("cmake", "3.7.2"); version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3") } 1, variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "libuv", "build") :- node("cmake"), 1 { version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4") } 1, variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "libuv", "link") :- node("cmake"), 1 { version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4") } 1, variant_value("cmake", "ownlibs", "False"). +node("libuv") :- depends_on("cmake", "libuv"), node("cmake"), 1 { version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4") } 1, variant_value("cmake", "ownlibs", "False"). +1 { version("libuv", "1.10.0") } 1 :- depends_on("cmake", "libuv"), node("cmake"), 1 { version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4") } 1, variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "libuv", "build") :- node("cmake"), 1 { version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "libuv", "link") :- node("cmake"), 1 { version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). +node("libuv") :- depends_on("cmake", "libuv"), node("cmake"), 1 { version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). +1 { version("libuv", "1.10.0"); version("libuv", "1.25.0") } 1 :- depends_on("cmake", "libuv"), node("cmake"), 1 { version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). + +declared_dependency("cmake", "ncurses", "build") :- node("cmake"), variant_value("cmake", "ncurses", "True"). +declared_dependency("cmake", "ncurses", "link") :- node("cmake"), variant_value("cmake", "ncurses", "True"). +node("ncurses") :- depends_on("cmake", "ncurses"), node("cmake"), variant_value("cmake", "ncurses", "True"). + +declared_dependency("cmake", "openssl", "build") :- node("cmake"), 1 { version("cmake", "2.8.10.2"); version("cmake", "3.0.2"); version("cmake", "3.1.0"); version("cmake", "3.3.1"); version("cmake", "3.4.0"); version("cmake", "3.4.3"); version("cmake", "3.5.0"); version("cmake", "3.5.1"); version("cmake", "3.5.2"); version("cmake", "3.6.0"); version("cmake", "3.6.1") } 1, variant_value("cmake", "openssl", "True"). +declared_dependency("cmake", "openssl", "link") :- node("cmake"), 1 { version("cmake", "2.8.10.2"); version("cmake", "3.0.2"); version("cmake", "3.1.0"); version("cmake", "3.3.1"); version("cmake", "3.4.0"); version("cmake", "3.4.3"); version("cmake", "3.5.0"); version("cmake", "3.5.1"); version("cmake", "3.5.2"); version("cmake", "3.6.0"); version("cmake", "3.6.1") } 1, variant_value("cmake", "openssl", "True"). +node("openssl") :- depends_on("cmake", "openssl"), node("cmake"), 1 { version("cmake", "2.8.10.2"); version("cmake", "3.0.2"); version("cmake", "3.1.0"); version("cmake", "3.3.1"); version("cmake", "3.4.0"); version("cmake", "3.4.3"); version("cmake", "3.5.0"); version("cmake", "3.5.1"); version("cmake", "3.5.2"); version("cmake", "3.6.0"); version("cmake", "3.6.1") } 1, variant_value("cmake", "openssl", "True"). +1 { version("openssl", "1.0.1e"); version("openssl", "1.0.1h"); version("openssl", "1.0.1r"); version("openssl", "1.0.1t"); version("openssl", "1.0.1u"); version("openssl", "1.0.2d"); version("openssl", "1.0.2e"); version("openssl", "1.0.2f"); version("openssl", "1.0.2g"); version("openssl", "1.0.2h"); version("openssl", "1.0.2i"); version("openssl", "1.0.2j"); version("openssl", "1.0.2k"); version("openssl", "1.0.2m"); version("openssl", "1.0.2n"); version("openssl", "1.0.2o"); version("openssl", "1.0.2p"); version("openssl", "1.0.2r"); version("openssl", "1.0.2s"); version("openssl", "1.0.2t") } 1 :- depends_on("cmake", "openssl"), node("cmake"), 1 { version("cmake", "2.8.10.2"); version("cmake", "3.0.2"); version("cmake", "3.1.0"); version("cmake", "3.3.1"); version("cmake", "3.4.0"); version("cmake", "3.4.3"); version("cmake", "3.5.0"); version("cmake", "3.5.1"); version("cmake", "3.5.2"); version("cmake", "3.6.0"); version("cmake", "3.6.1") } 1, variant_value("cmake", "openssl", "True"). +declared_dependency("cmake", "openssl", "build") :- node("cmake"), variant_value("cmake", "openssl", "True"). +declared_dependency("cmake", "openssl", "link") :- node("cmake"), variant_value("cmake", "openssl", "True"). +node("openssl") :- depends_on("cmake", "openssl"), node("cmake"), variant_value("cmake", "openssl", "True"). + +declared_dependency("cmake", "py-sphinx", "build") :- node("cmake"), variant_value("cmake", "doc", "True"). +node("py-sphinx") :- depends_on("cmake", "py-sphinx"), node("cmake"), variant_value("cmake", "doc", "True"). + +declared_dependency("cmake", "python", "build") :- node("cmake"), variant_value("cmake", "doc", "True"). +node("python") :- depends_on("cmake", "python"), node("cmake"), variant_value("cmake", "doc", "True"). +1 { version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.1.5"); version("python", "3.2.6"); version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("cmake", "python"), node("cmake"), variant_value("cmake", "doc", "True"). + +declared_dependency("cmake", "qt", "build") :- node("cmake"), variant_value("cmake", "qt", "True"). +declared_dependency("cmake", "qt", "link") :- node("cmake"), variant_value("cmake", "qt", "True"). +node("qt") :- depends_on("cmake", "qt"), node("cmake"), variant_value("cmake", "qt", "True"). + +declared_dependency("cmake", "rhash", "build") :- node("cmake"), 1 { version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3"); version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4"); version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "rhash", "link") :- node("cmake"), 1 { version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3"); version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4"); version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). +node("rhash") :- depends_on("cmake", "rhash"), node("cmake"), 1 { version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3"); version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4"); version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1, variant_value("cmake", "ownlibs", "False"). + +declared_dependency("cmake", "xz", "build") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "xz", "link") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +node("xz") :- depends_on("cmake", "xz"), node("cmake"), variant_value("cmake", "ownlibs", "False"). + +declared_dependency("cmake", "zlib", "build") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +declared_dependency("cmake", "zlib", "link") :- node("cmake"), variant_value("cmake", "ownlibs", "False"). +node("zlib") :- depends_on("cmake", "zlib"), node("cmake"), variant_value("cmake", "ownlibs", "False"). + + +%---------------------------------------------------------------------------- +% Package: compositeproto +%---------------------------------------------------------------------------- +version_declared("compositeproto", "0.4.2", 0). + +declared_dependency("compositeproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("compositeproto", "pkgconfig"), node("compositeproto"). + +declared_dependency("compositeproto", "util-macros", "build"). +node("util-macros") :- depends_on("compositeproto", "util-macros"), node("compositeproto"). + + +%---------------------------------------------------------------------------- +% Package: cpio +%---------------------------------------------------------------------------- +version_declared("cpio", "2.13", 0). + + +%---------------------------------------------------------------------------- +% Package: cray-libsci +%---------------------------------------------------------------------------- +version_declared("cray-libsci", "18.11.1.2", 0). +version_declared("cray-libsci", "16.11.1", 1). +version_declared("cray-libsci", "16.09.1", 2). +version_declared("cray-libsci", "16.07.1", 3). +version_declared("cray-libsci", "16.06.1", 4). +version_declared("cray-libsci", "16.03.1", 5). + + +%---------------------------------------------------------------------------- +% Package: cuda +%---------------------------------------------------------------------------- + + +%---------------------------------------------------------------------------- +% Package: cups +%---------------------------------------------------------------------------- +version_declared("cups", "2.2.3", 0). + +declared_dependency("cups", "gnutls", "build"). +declared_dependency("cups", "gnutls", "link"). +node("gnutls") :- depends_on("cups", "gnutls"), node("cups"). + + +%---------------------------------------------------------------------------- +% Package: curl +%---------------------------------------------------------------------------- +version_declared("curl", "7.68.0", 0). +version_declared("curl", "7.63.0", 1). +version_declared("curl", "7.60.0", 2). +version_declared("curl", "7.59.0", 3). +version_declared("curl", "7.56.0", 4). +version_declared("curl", "7.54.0", 5). +version_declared("curl", "7.53.1", 6). +version_declared("curl", "7.52.1", 7). +version_declared("curl", "7.50.3", 8). +version_declared("curl", "7.50.2", 9). +version_declared("curl", "7.50.1", 10). +version_declared("curl", "7.49.1", 11). +version_declared("curl", "7.47.1", 12). +version_declared("curl", "7.46.0", 13). +version_declared("curl", "7.45.0", 14). +version_declared("curl", "7.44.0", 15). +version_declared("curl", "7.43.0", 16). +version_declared("curl", "7.42.1", 17). + +variant("curl", "darwinssl"). +variant_single_value("curl", "darwinssl"). +variant_default_value("curl", "darwinssl", "True"). +variant_possible_value("curl", "darwinssl", "False"). +variant_possible_value("curl", "darwinssl", "True"). + +variant("curl", "gssapi"). +variant_single_value("curl", "gssapi"). +variant_default_value("curl", "gssapi", "False"). +variant_possible_value("curl", "gssapi", "False"). +variant_possible_value("curl", "gssapi", "True"). + +variant("curl", "libssh"). +variant_single_value("curl", "libssh"). +variant_default_value("curl", "libssh", "False"). +variant_possible_value("curl", "libssh", "False"). +variant_possible_value("curl", "libssh", "True"). + +variant("curl", "libssh2"). +variant_single_value("curl", "libssh2"). +variant_default_value("curl", "libssh2", "False"). +variant_possible_value("curl", "libssh2", "False"). +variant_possible_value("curl", "libssh2", "True"). + +variant("curl", "nghttp2"). +variant_single_value("curl", "nghttp2"). +variant_default_value("curl", "nghttp2", "False"). +variant_possible_value("curl", "nghttp2", "False"). +variant_possible_value("curl", "nghttp2", "True"). + +declared_dependency("curl", "krb5", "build") :- node("curl"), variant_value("curl", "gssapi", "True"). +declared_dependency("curl", "krb5", "link") :- node("curl"), variant_value("curl", "gssapi", "True"). +node("krb5") :- depends_on("curl", "krb5"), node("curl"), variant_value("curl", "gssapi", "True"). + +declared_dependency("curl", "libssh", "build") :- node("curl"), variant_value("curl", "libssh", "True"). +declared_dependency("curl", "libssh", "link") :- node("curl"), variant_value("curl", "libssh", "True"). +node("libssh") :- depends_on("curl", "libssh"), node("curl"), variant_value("curl", "libssh", "True"). + +declared_dependency("curl", "libssh2", "build") :- node("curl"), variant_value("curl", "libssh2", "True"). +declared_dependency("curl", "libssh2", "link") :- node("curl"), variant_value("curl", "libssh2", "True"). +node("libssh2") :- depends_on("curl", "libssh2"), node("curl"), variant_value("curl", "libssh2", "True"). + +declared_dependency("curl", "nghttp2", "build") :- node("curl"), variant_value("curl", "nghttp2", "True"). +declared_dependency("curl", "nghttp2", "link") :- node("curl"), variant_value("curl", "nghttp2", "True"). +node("nghttp2") :- depends_on("curl", "nghttp2"), node("curl"), variant_value("curl", "nghttp2", "True"). + +declared_dependency("curl", "openssl", "build") :- node("curl"), variant_value("curl", "darwinssl", "False"). +declared_dependency("curl", "openssl", "link") :- node("curl"), variant_value("curl", "darwinssl", "False"). +node("openssl") :- depends_on("curl", "openssl"), node("curl"), variant_value("curl", "darwinssl", "False"). + +declared_dependency("curl", "zlib", "build"). +declared_dependency("curl", "zlib", "link"). +node("zlib") :- depends_on("curl", "zlib"), node("curl"). + + +%---------------------------------------------------------------------------- +% Package: dbus +%---------------------------------------------------------------------------- +version_declared("dbus", "1.12.8", 0). +version_declared("dbus", "1.11.2", 1). +version_declared("dbus", "1.9.0", 2). +version_declared("dbus", "1.8.8", 3). +version_declared("dbus", "1.8.6", 4). +version_declared("dbus", "1.8.4", 5). +version_declared("dbus", "1.8.2", 6). + +declared_dependency("dbus", "expat", "build"). +declared_dependency("dbus", "expat", "link"). +node("expat") :- depends_on("dbus", "expat"), node("dbus"). + +declared_dependency("dbus", "glib", "build"). +declared_dependency("dbus", "glib", "link"). +node("glib") :- depends_on("dbus", "glib"), node("dbus"). + +declared_dependency("dbus", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("dbus", "pkgconfig"), node("dbus"). + + +%---------------------------------------------------------------------------- +% Package: diffutils +%---------------------------------------------------------------------------- +version_declared("diffutils", "3.7", 0). +version_declared("diffutils", "3.6", 1). + +declared_dependency("diffutils", "libiconv", "build"). +declared_dependency("diffutils", "libiconv", "link"). +node("libiconv") :- depends_on("diffutils", "libiconv"), node("diffutils"). + + +%---------------------------------------------------------------------------- +% Package: docbook-xml +%---------------------------------------------------------------------------- +version_declared("docbook-xml", "4.5", 0). + + +%---------------------------------------------------------------------------- +% Package: docbook-xsl +%---------------------------------------------------------------------------- +version_declared("docbook-xsl", "1.79.2", 0). + +declared_dependency("docbook-xsl", "docbook-xml", "build"). +declared_dependency("docbook-xsl", "docbook-xml", "link"). +node("docbook-xml") :- depends_on("docbook-xsl", "docbook-xml"), node("docbook-xsl"). + + +%---------------------------------------------------------------------------- +% Package: double-conversion +%---------------------------------------------------------------------------- +version_declared("double-conversion", "2.0.1", 0). +version_declared("double-conversion", "2.0.0", 1). +version_declared("double-conversion", "1.1.5", 2). +version_declared("double-conversion", "1.1.4", 3). +version_declared("double-conversion", "1.1.3", 4). + +variant("double-conversion", "build_type"). +variant_single_value("double-conversion", "build_type"). +variant_default_value("double-conversion", "build_type", "RelWithDebInfo"). +variant_possible_value("double-conversion", "build_type", "Debug"). +variant_possible_value("double-conversion", "build_type", "MinSizeRel"). +variant_possible_value("double-conversion", "build_type", "RelWithDebInfo"). +variant_possible_value("double-conversion", "build_type", "Release"). + +declared_dependency("double-conversion", "cmake", "build"). +node("cmake") :- depends_on("double-conversion", "cmake"), node("double-conversion"). + + +%---------------------------------------------------------------------------- +% Package: essl +%---------------------------------------------------------------------------- + +variant("essl", "cuda"). +variant_single_value("essl", "cuda"). +variant_default_value("essl", "cuda", "False"). +variant_possible_value("essl", "cuda", "False"). +variant_possible_value("essl", "cuda", "True"). + +variant("essl", "ilp64"). +variant_single_value("essl", "ilp64"). +variant_default_value("essl", "ilp64", "False"). +variant_possible_value("essl", "ilp64", "False"). +variant_possible_value("essl", "ilp64", "True"). + +variant("essl", "threads"). +variant_single_value("essl", "threads"). +variant_default_value("essl", "threads", "openmp"). +variant_possible_value("essl", "threads", "none"). +variant_possible_value("essl", "threads", "openmp"). + + +%---------------------------------------------------------------------------- +% Package: expat +%---------------------------------------------------------------------------- +version_declared("expat", "2.2.9", 0). +version_declared("expat", "2.2.5", 1). +version_declared("expat", "2.2.2", 2). +version_declared("expat", "2.2.0", 3). + +variant("expat", "libbsd"). +variant_single_value("expat", "libbsd"). +variant_default_value("expat", "libbsd", "False"). +variant_possible_value("expat", "libbsd", "False"). +variant_possible_value("expat", "libbsd", "True"). + +declared_dependency("expat", "libbsd", "build") :- node("expat"), 1 { version("expat", "2.2.2"); version("expat", "2.2.5"); version("expat", "2.2.9") } 1, variant_value("expat", "libbsd", "True"). +declared_dependency("expat", "libbsd", "link") :- node("expat"), 1 { version("expat", "2.2.2"); version("expat", "2.2.5"); version("expat", "2.2.9") } 1, variant_value("expat", "libbsd", "True"). +node("libbsd") :- depends_on("expat", "libbsd"), node("expat"), 1 { version("expat", "2.2.2"); version("expat", "2.2.5"); version("expat", "2.2.9") } 1, variant_value("expat", "libbsd", "True"). + + +%---------------------------------------------------------------------------- +% Package: findutils +%---------------------------------------------------------------------------- +version_declared("findutils", "4.6.0", 0). +version_declared("findutils", "4.4.2", 1). +version_declared("findutils", "4.4.1", 2). +version_declared("findutils", "4.4.0", 3). +version_declared("findutils", "4.2.33", 4). +version_declared("findutils", "4.2.32", 5). +version_declared("findutils", "4.2.31", 6). +version_declared("findutils", "4.2.30", 7). +version_declared("findutils", "4.2.29", 8). +version_declared("findutils", "4.2.28", 9). +version_declared("findutils", "4.2.27", 10). +version_declared("findutils", "4.2.26", 11). +version_declared("findutils", "4.2.25", 12). +version_declared("findutils", "4.2.23", 13). +version_declared("findutils", "4.2.20", 14). +version_declared("findutils", "4.2.18", 15). +version_declared("findutils", "4.2.15", 16). +version_declared("findutils", "4.1.20", 17). +version_declared("findutils", "4.1", 18). + +declared_dependency("findutils", "autoconf", "build") :- node("findutils"), 1 { version("findutils", "4.6.0") } 1. +node("autoconf") :- depends_on("findutils", "autoconf"), node("findutils"), 1 { version("findutils", "4.6.0") } 1. + +declared_dependency("findutils", "automake", "build") :- node("findutils"), 1 { version("findutils", "4.6.0") } 1. +node("automake") :- depends_on("findutils", "automake"), node("findutils"), 1 { version("findutils", "4.6.0") } 1. + +declared_dependency("findutils", "libtool", "build") :- node("findutils"), 1 { version("findutils", "4.6.0") } 1. +node("libtool") :- depends_on("findutils", "libtool"), node("findutils"), 1 { version("findutils", "4.6.0") } 1. + +declared_dependency("findutils", "m4", "build") :- node("findutils"), 1 { version("findutils", "4.6.0") } 1. +node("m4") :- depends_on("findutils", "m4"), node("findutils"), 1 { version("findutils", "4.6.0") } 1. + +declared_dependency("findutils", "texinfo", "build") :- node("findutils"), 1 { version("findutils", "4.6.0") } 1. +node("texinfo") :- depends_on("findutils", "texinfo"), node("findutils"), 1 { version("findutils", "4.6.0") } 1. + + +%---------------------------------------------------------------------------- +% Package: fixesproto +%---------------------------------------------------------------------------- +version_declared("fixesproto", "5.0", 0). + +declared_dependency("fixesproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("fixesproto", "pkgconfig"), node("fixesproto"). + +declared_dependency("fixesproto", "util-macros", "build"). +node("util-macros") :- depends_on("fixesproto", "util-macros"), node("fixesproto"). + + +%---------------------------------------------------------------------------- +% Package: flex +%---------------------------------------------------------------------------- +version_declared("flex", "2.6.4", 0). +version_declared("flex", "2.6.3", 1). +version_declared("flex", "2.6.1", 2). +version_declared("flex", "2.6.0", 3). +version_declared("flex", "2.5.39", 4). + +variant("flex", "lex"). +variant_single_value("flex", "lex"). +variant_default_value("flex", "lex", "True"). +variant_possible_value("flex", "lex", "False"). +variant_possible_value("flex", "lex", "True"). + +declared_dependency("flex", "autoconf", "build") :- node("flex"), 1 { version("flex", "2.5.39"); version("flex", "2.6.0"); version("flex", "2.6.4") } 1. +node("autoconf") :- depends_on("flex", "autoconf"), node("flex"), 1 { version("flex", "2.5.39"); version("flex", "2.6.0"); version("flex", "2.6.4") } 1. + +declared_dependency("flex", "automake", "build") :- node("flex"), 1 { version("flex", "2.5.39"); version("flex", "2.6.0"); version("flex", "2.6.4") } 1. +node("automake") :- depends_on("flex", "automake"), node("flex"), 1 { version("flex", "2.5.39"); version("flex", "2.6.0"); version("flex", "2.6.4") } 1. + +declared_dependency("flex", "bison", "build"). +node("bison") :- depends_on("flex", "bison"), node("flex"). + +declared_dependency("flex", "diffutils", "build"). +node("diffutils") :- depends_on("flex", "diffutils"), node("flex"). + +declared_dependency("flex", "findutils", "build"). +node("findutils") :- depends_on("flex", "findutils"), node("flex"). + +declared_dependency("flex", "gettext", "build"). +node("gettext") :- depends_on("flex", "gettext"), node("flex"). + +declared_dependency("flex", "help2man", "build"). +node("help2man") :- depends_on("flex", "help2man"), node("flex"). + +declared_dependency("flex", "libtool", "build") :- node("flex"), 1 { version("flex", "2.5.39"); version("flex", "2.6.0"); version("flex", "2.6.4") } 1. +node("libtool") :- depends_on("flex", "libtool"), node("flex"), 1 { version("flex", "2.5.39"); version("flex", "2.6.0"); version("flex", "2.6.4") } 1. + +declared_dependency("flex", "m4", "build"). +node("m4") :- depends_on("flex", "m4"), node("flex"). + + +%---------------------------------------------------------------------------- +% Package: font-util +%---------------------------------------------------------------------------- +version_declared("font-util", "1.3.2", 0). +version_declared("font-util", "1.3.1", 1). + +variant("font-util", "fonts"). +not variant_single_value("font-util", "fonts"). +variant_default_value("font-util", "fonts", "encodings"). +variant_default_value("font-util", "fonts", "font-adobe-100dpi"). +variant_default_value("font-util", "fonts", "font-adobe-75dpi"). +variant_default_value("font-util", "fonts", "font-adobe-utopia-100dpi"). +variant_default_value("font-util", "fonts", "font-adobe-utopia-75dpi"). +variant_default_value("font-util", "fonts", "font-adobe-utopia-type1"). +variant_default_value("font-util", "fonts", "font-alias"). +variant_default_value("font-util", "fonts", "font-arabic-misc"). +variant_default_value("font-util", "fonts", "font-bh-100dpi"). +variant_default_value("font-util", "fonts", "font-bh-75dpi"). +variant_default_value("font-util", "fonts", "font-bh-lucidatypewriter-100dpi"). +variant_default_value("font-util", "fonts", "font-bh-lucidatypewriter-75dpi"). +variant_default_value("font-util", "fonts", "font-bh-ttf"). +variant_default_value("font-util", "fonts", "font-bh-type1"). +variant_default_value("font-util", "fonts", "font-bitstream-100dpi"). +variant_default_value("font-util", "fonts", "font-bitstream-75dpi"). +variant_default_value("font-util", "fonts", "font-bitstream-speedo"). +variant_default_value("font-util", "fonts", "font-bitstream-type1"). +variant_default_value("font-util", "fonts", "font-cronyx-cyrillic"). +variant_default_value("font-util", "fonts", "font-cursor-misc"). +variant_default_value("font-util", "fonts", "font-daewoo-misc"). +variant_default_value("font-util", "fonts", "font-dec-misc"). +variant_default_value("font-util", "fonts", "font-ibm-type1"). +variant_default_value("font-util", "fonts", "font-isas-misc"). +variant_default_value("font-util", "fonts", "font-jis-misc"). +variant_default_value("font-util", "fonts", "font-micro-misc"). +variant_default_value("font-util", "fonts", "font-misc-cyrillic"). +variant_default_value("font-util", "fonts", "font-misc-ethiopic"). +variant_default_value("font-util", "fonts", "font-misc-meltho"). +variant_default_value("font-util", "fonts", "font-misc-misc"). +variant_default_value("font-util", "fonts", "font-mutt-misc"). +variant_default_value("font-util", "fonts", "font-schumacher-misc"). +variant_default_value("font-util", "fonts", "font-screen-cyrillic"). +variant_default_value("font-util", "fonts", "font-sun-misc"). +variant_default_value("font-util", "fonts", "font-winitzki-cyrillic"). +variant_default_value("font-util", "fonts", "font-xfree86-type1"). +variant_possible_value("font-util", "fonts", "encodings"). +variant_possible_value("font-util", "fonts", "font-adobe-100dpi"). +variant_possible_value("font-util", "fonts", "font-adobe-75dpi"). +variant_possible_value("font-util", "fonts", "font-adobe-utopia-100dpi"). +variant_possible_value("font-util", "fonts", "font-adobe-utopia-75dpi"). +variant_possible_value("font-util", "fonts", "font-adobe-utopia-type1"). +variant_possible_value("font-util", "fonts", "font-alias"). +variant_possible_value("font-util", "fonts", "font-arabic-misc"). +variant_possible_value("font-util", "fonts", "font-bh-100dpi"). +variant_possible_value("font-util", "fonts", "font-bh-75dpi"). +variant_possible_value("font-util", "fonts", "font-bh-lucidatypewriter-100dpi"). +variant_possible_value("font-util", "fonts", "font-bh-lucidatypewriter-75dpi"). +variant_possible_value("font-util", "fonts", "font-bh-ttf"). +variant_possible_value("font-util", "fonts", "font-bh-type1"). +variant_possible_value("font-util", "fonts", "font-bitstream-100dpi"). +variant_possible_value("font-util", "fonts", "font-bitstream-75dpi"). +variant_possible_value("font-util", "fonts", "font-bitstream-speedo"). +variant_possible_value("font-util", "fonts", "font-bitstream-type1"). +variant_possible_value("font-util", "fonts", "font-cronyx-cyrillic"). +variant_possible_value("font-util", "fonts", "font-cursor-misc"). +variant_possible_value("font-util", "fonts", "font-daewoo-misc"). +variant_possible_value("font-util", "fonts", "font-dec-misc"). +variant_possible_value("font-util", "fonts", "font-ibm-type1"). +variant_possible_value("font-util", "fonts", "font-isas-misc"). +variant_possible_value("font-util", "fonts", "font-jis-misc"). +variant_possible_value("font-util", "fonts", "font-micro-misc"). +variant_possible_value("font-util", "fonts", "font-misc-cyrillic"). +variant_possible_value("font-util", "fonts", "font-misc-ethiopic"). +variant_possible_value("font-util", "fonts", "font-misc-meltho"). +variant_possible_value("font-util", "fonts", "font-misc-misc"). +variant_possible_value("font-util", "fonts", "font-mutt-misc"). +variant_possible_value("font-util", "fonts", "font-schumacher-misc"). +variant_possible_value("font-util", "fonts", "font-screen-cyrillic"). +variant_possible_value("font-util", "fonts", "font-sun-misc"). +variant_possible_value("font-util", "fonts", "font-winitzki-cyrillic"). +variant_possible_value("font-util", "fonts", "font-xfree86-type1"). + +declared_dependency("font-util", "autoconf", "build"). +node("autoconf") :- depends_on("font-util", "autoconf"), node("font-util"). + +declared_dependency("font-util", "automake", "build"). +node("automake") :- depends_on("font-util", "automake"), node("font-util"). + +declared_dependency("font-util", "bdftopcf", "build"). +node("bdftopcf") :- depends_on("font-util", "bdftopcf"), node("font-util"). + +declared_dependency("font-util", "mkfontdir", "build"). +node("mkfontdir") :- depends_on("font-util", "mkfontdir"), node("font-util"). + +declared_dependency("font-util", "mkfontscale", "build"). +node("mkfontscale") :- depends_on("font-util", "mkfontscale"), node("font-util"). + +declared_dependency("font-util", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("font-util", "pkgconfig"), node("font-util"). + +declared_dependency("font-util", "util-macros", "build"). +node("util-macros") :- depends_on("font-util", "util-macros"), node("font-util"). + + +%---------------------------------------------------------------------------- +% Package: fontconfig +%---------------------------------------------------------------------------- +version_declared("fontconfig", "2.12.3", 0). +version_declared("fontconfig", "2.12.1", 1). +version_declared("fontconfig", "2.11.1", 2). + +declared_dependency("fontconfig", "font-util", "build"). +declared_dependency("fontconfig", "font-util", "link"). +node("font-util") :- depends_on("fontconfig", "font-util"), node("fontconfig"). + +declared_dependency("fontconfig", "freetype", "build"). +declared_dependency("fontconfig", "freetype", "link"). +node("freetype") :- depends_on("fontconfig", "freetype"), node("fontconfig"). + +declared_dependency("fontconfig", "gperf", "build") :- node("fontconfig"), 1 { version("fontconfig", "2.12.3") } 1. +node("gperf") :- depends_on("fontconfig", "gperf"), node("fontconfig"), 1 { version("fontconfig", "2.12.3") } 1. + +declared_dependency("fontconfig", "libxml2", "build"). +declared_dependency("fontconfig", "libxml2", "link"). +node("libxml2") :- depends_on("fontconfig", "libxml2"), node("fontconfig"). + +declared_dependency("fontconfig", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("fontconfig", "pkgconfig"), node("fontconfig"). + + +%---------------------------------------------------------------------------- +% Package: fontsproto +%---------------------------------------------------------------------------- +version_declared("fontsproto", "2.1.3", 0). + +declared_dependency("fontsproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("fontsproto", "pkgconfig"), node("fontsproto"). + +declared_dependency("fontsproto", "util-macros", "build"). +node("util-macros") :- depends_on("fontsproto", "util-macros"), node("fontsproto"). + + +%---------------------------------------------------------------------------- +% Package: freetype +%---------------------------------------------------------------------------- +version_declared("freetype", "2.10.1", 0). +version_declared("freetype", "2.9.1", 1). +version_declared("freetype", "2.7.1", 2). +version_declared("freetype", "2.7", 3). +version_declared("freetype", "2.5.3", 4). + +declared_dependency("freetype", "bzip2", "build"). +declared_dependency("freetype", "bzip2", "link"). +node("bzip2") :- depends_on("freetype", "bzip2"), node("freetype"). + +declared_dependency("freetype", "libpng", "build"). +declared_dependency("freetype", "libpng", "link"). +node("libpng") :- depends_on("freetype", "libpng"), node("freetype"). + +declared_dependency("freetype", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("freetype", "pkgconfig"), node("freetype"). + + +%---------------------------------------------------------------------------- +% Package: fujitsu-mpi +%---------------------------------------------------------------------------- + + +%---------------------------------------------------------------------------- +% Package: gawk +%---------------------------------------------------------------------------- +version_declared("gawk", "5.0.1", 0). +version_declared("gawk", "4.1.4", 1). + +declared_dependency("gawk", "gettext", "build"). +declared_dependency("gawk", "gettext", "link"). +node("gettext") :- depends_on("gawk", "gettext"), node("gawk"). + +declared_dependency("gawk", "gmp", "build"). +declared_dependency("gawk", "gmp", "link"). +node("gmp") :- depends_on("gawk", "gmp"), node("gawk"). + +declared_dependency("gawk", "libsigsegv", "build"). +declared_dependency("gawk", "libsigsegv", "link"). +node("libsigsegv") :- depends_on("gawk", "libsigsegv"), node("gawk"). + +declared_dependency("gawk", "mpfr", "build"). +declared_dependency("gawk", "mpfr", "link"). +node("mpfr") :- depends_on("gawk", "mpfr"), node("gawk"). + +declared_dependency("gawk", "readline", "build"). +declared_dependency("gawk", "readline", "link"). +node("readline") :- depends_on("gawk", "readline"), node("gawk"). + + +%---------------------------------------------------------------------------- +% Package: gdbm +%---------------------------------------------------------------------------- +version_declared("gdbm", "1.18.1", 0). +version_declared("gdbm", "1.14.1", 1). +version_declared("gdbm", "1.13", 2). +version_declared("gdbm", "1.12", 3). +version_declared("gdbm", "1.11", 4). +version_declared("gdbm", "1.10", 5). +version_declared("gdbm", "1.9.1", 6). +version_declared("gdbm", "1.9", 7). + +declared_dependency("gdbm", "readline", "build"). +declared_dependency("gdbm", "readline", "link"). +node("readline") :- depends_on("gdbm", "readline"), node("gdbm"). + + +%---------------------------------------------------------------------------- +% Package: gdk-pixbuf +%---------------------------------------------------------------------------- +version_declared("gdk-pixbuf", "2.38.0", 0). +version_declared("gdk-pixbuf", "2.31.2", 1). + +declared_dependency("gdk-pixbuf", "docbook-xsl", "build"). +node("docbook-xsl") :- depends_on("gdk-pixbuf", "docbook-xsl"), node("gdk-pixbuf"). + +declared_dependency("gdk-pixbuf", "gettext", "build"). +declared_dependency("gdk-pixbuf", "gettext", "link"). +node("gettext") :- depends_on("gdk-pixbuf", "gettext"), node("gdk-pixbuf"). + +declared_dependency("gdk-pixbuf", "glib", "build"). +declared_dependency("gdk-pixbuf", "glib", "link"). +node("glib") :- depends_on("gdk-pixbuf", "glib"), node("gdk-pixbuf"). + +declared_dependency("gdk-pixbuf", "gobject-introspection", "build"). +declared_dependency("gdk-pixbuf", "gobject-introspection", "link"). +node("gobject-introspection") :- depends_on("gdk-pixbuf", "gobject-introspection"), node("gdk-pixbuf"). + +declared_dependency("gdk-pixbuf", "jpeg", "build"). +declared_dependency("gdk-pixbuf", "jpeg", "link"). +node("jpeg") :- depends_on("gdk-pixbuf", "jpeg"), node("gdk-pixbuf"). + +declared_dependency("gdk-pixbuf", "libpng", "build"). +declared_dependency("gdk-pixbuf", "libpng", "link"). +node("libpng") :- depends_on("gdk-pixbuf", "libpng"), node("gdk-pixbuf"). + +declared_dependency("gdk-pixbuf", "libtiff", "build"). +declared_dependency("gdk-pixbuf", "libtiff", "link"). +node("libtiff") :- depends_on("gdk-pixbuf", "libtiff"), node("gdk-pixbuf"). + +declared_dependency("gdk-pixbuf", "libxslt", "build"). +node("libxslt") :- depends_on("gdk-pixbuf", "libxslt"), node("gdk-pixbuf"). + +declared_dependency("gdk-pixbuf", "meson", "build") :- node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1. +node("meson") :- depends_on("gdk-pixbuf", "meson"), node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1. +1 { version("meson", "0.49.0"); version("meson", "0.49.1") } 1 :- depends_on("gdk-pixbuf", "meson"), node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1. +declared_dependency("gdk-pixbuf", "meson", "build") :- node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1. +node("meson") :- depends_on("gdk-pixbuf", "meson"), node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1. +1 { version("meson", "0.49.0"); version("meson", "0.49.1") } 1 :- depends_on("gdk-pixbuf", "meson"), node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1. + +declared_dependency("gdk-pixbuf", "ninja", "build") :- node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1. +node("ninja") :- depends_on("gdk-pixbuf", "ninja"), node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1. + +declared_dependency("gdk-pixbuf", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("gdk-pixbuf", "pkgconfig"), node("gdk-pixbuf"). + +declared_dependency("gdk-pixbuf", "shared-mime-info", "build") :- node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1, node_platform("gdk-pixbuf", "cray"). +node("shared-mime-info") :- depends_on("gdk-pixbuf", "shared-mime-info"), node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1, node_platform("gdk-pixbuf", "cray"). +declared_dependency("gdk-pixbuf", "shared-mime-info", "build") :- node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1, node_platform("gdk-pixbuf", "linux"). +node("shared-mime-info") :- depends_on("gdk-pixbuf", "shared-mime-info"), node("gdk-pixbuf"), 1 { version("gdk-pixbuf", "2.38.0") } 1, node_platform("gdk-pixbuf", "linux"). + +declared_dependency("gdk-pixbuf", "zlib", "build"). +declared_dependency("gdk-pixbuf", "zlib", "link"). +node("zlib") :- depends_on("gdk-pixbuf", "zlib"), node("gdk-pixbuf"). + + +%---------------------------------------------------------------------------- +% Package: gettext +%---------------------------------------------------------------------------- +version_declared("gettext", "0.20.1", 0). +version_declared("gettext", "0.19.8.1", 1). +version_declared("gettext", "0.19.7", 2). + +variant("gettext", "bzip2"). +variant_single_value("gettext", "bzip2"). +variant_default_value("gettext", "bzip2", "True"). +variant_possible_value("gettext", "bzip2", "False"). +variant_possible_value("gettext", "bzip2", "True"). + +variant("gettext", "curses"). +variant_single_value("gettext", "curses"). +variant_default_value("gettext", "curses", "True"). +variant_possible_value("gettext", "curses", "False"). +variant_possible_value("gettext", "curses", "True"). + +variant("gettext", "git"). +variant_single_value("gettext", "git"). +variant_default_value("gettext", "git", "True"). +variant_possible_value("gettext", "git", "False"). +variant_possible_value("gettext", "git", "True"). + +variant("gettext", "libunistring"). +variant_single_value("gettext", "libunistring"). +variant_default_value("gettext", "libunistring", "False"). +variant_possible_value("gettext", "libunistring", "False"). +variant_possible_value("gettext", "libunistring", "True"). + +variant("gettext", "libxml2"). +variant_single_value("gettext", "libxml2"). +variant_default_value("gettext", "libxml2", "True"). +variant_possible_value("gettext", "libxml2", "False"). +variant_possible_value("gettext", "libxml2", "True"). + +variant("gettext", "tar"). +variant_single_value("gettext", "tar"). +variant_default_value("gettext", "tar", "True"). +variant_possible_value("gettext", "tar", "False"). +variant_possible_value("gettext", "tar", "True"). + +variant("gettext", "xz"). +variant_single_value("gettext", "xz"). +variant_default_value("gettext", "xz", "True"). +variant_possible_value("gettext", "xz", "False"). +variant_possible_value("gettext", "xz", "True"). + +declared_dependency("gettext", "bzip2", "build") :- node("gettext"), variant_value("gettext", "bzip2", "True"). +declared_dependency("gettext", "bzip2", "link") :- node("gettext"), variant_value("gettext", "bzip2", "True"). +node("bzip2") :- depends_on("gettext", "bzip2"), node("gettext"), variant_value("gettext", "bzip2", "True"). + +declared_dependency("gettext", "libunistring", "build") :- node("gettext"), variant_value("gettext", "libunistring", "True"). +declared_dependency("gettext", "libunistring", "link") :- node("gettext"), variant_value("gettext", "libunistring", "True"). +node("libunistring") :- depends_on("gettext", "libunistring"), node("gettext"), variant_value("gettext", "libunistring", "True"). + +declared_dependency("gettext", "libxml2", "build") :- node("gettext"), variant_value("gettext", "libxml2", "True"). +declared_dependency("gettext", "libxml2", "link") :- node("gettext"), variant_value("gettext", "libxml2", "True"). +node("libxml2") :- depends_on("gettext", "libxml2"), node("gettext"), variant_value("gettext", "libxml2", "True"). + +declared_dependency("gettext", "ncurses", "build") :- node("gettext"), variant_value("gettext", "curses", "True"). +declared_dependency("gettext", "ncurses", "link") :- node("gettext"), variant_value("gettext", "curses", "True"). +node("ncurses") :- depends_on("gettext", "ncurses"), node("gettext"), variant_value("gettext", "curses", "True"). + +declared_dependency("gettext", "tar", "build") :- node("gettext"), variant_value("gettext", "tar", "True"). +declared_dependency("gettext", "tar", "link") :- node("gettext"), variant_value("gettext", "tar", "True"). +node("tar") :- depends_on("gettext", "tar"), node("gettext"), variant_value("gettext", "tar", "True"). + +declared_dependency("gettext", "xz", "build") :- node("gettext"), variant_value("gettext", "xz", "True"). +declared_dependency("gettext", "xz", "link") :- node("gettext"), variant_value("gettext", "xz", "True"). +declared_dependency("gettext", "xz", "run") :- node("gettext"), variant_value("gettext", "xz", "True"). +node("xz") :- depends_on("gettext", "xz"), node("gettext"), variant_value("gettext", "xz", "True"). + + +%---------------------------------------------------------------------------- +% Package: giflib +%---------------------------------------------------------------------------- +version_declared("giflib", "5.1.4", 0). + + +%---------------------------------------------------------------------------- +% Package: git +%---------------------------------------------------------------------------- +version_declared("git", "2.25.0", 0). +version_declared("git", "2.21.0", 1). +version_declared("git", "2.20.1", 2). +version_declared("git", "2.19.2", 3). +version_declared("git", "2.19.1", 4). +version_declared("git", "2.18.0", 5). +version_declared("git", "2.17.1", 6). +version_declared("git", "2.17.0", 7). +version_declared("git", "2.15.1", 8). +version_declared("git", "2.14.1", 9). +version_declared("git", "2.13.0", 10). +version_declared("git", "2.12.2", 11). +version_declared("git", "2.12.1", 12). +version_declared("git", "2.12.0", 13). +version_declared("git", "2.11.1", 14). +version_declared("git", "2.11.0", 15). +version_declared("git", "2.9.3", 16). +version_declared("git", "2.9.2", 17). +version_declared("git", "2.9.1", 18). +version_declared("git", "2.9.0", 19). +version_declared("git", "2.8.4", 20). +version_declared("git", "2.8.3", 21). +version_declared("git", "2.8.2", 22). +version_declared("git", "2.8.1", 23). +version_declared("git", "2.8.0", 24). +version_declared("git", "2.7.3", 25). +version_declared("git", "2.7.1", 26). + +variant("git", "tcltk"). +variant_single_value("git", "tcltk"). +variant_default_value("git", "tcltk", "False"). +variant_possible_value("git", "tcltk", "False"). +variant_possible_value("git", "tcltk", "True"). + +declared_dependency("git", "autoconf", "build"). +node("autoconf") :- depends_on("git", "autoconf"), node("git"). + +declared_dependency("git", "automake", "build"). +node("automake") :- depends_on("git", "automake"), node("git"). + +declared_dependency("git", "curl", "build"). +declared_dependency("git", "curl", "link"). +node("curl") :- depends_on("git", "curl"), node("git"). + +declared_dependency("git", "expat", "build"). +declared_dependency("git", "expat", "link"). +node("expat") :- depends_on("git", "expat"), node("git"). + +declared_dependency("git", "gettext", "build"). +declared_dependency("git", "gettext", "link"). +node("gettext") :- depends_on("git", "gettext"), node("git"). + +declared_dependency("git", "libiconv", "build"). +declared_dependency("git", "libiconv", "link"). +node("libiconv") :- depends_on("git", "libiconv"), node("git"). + +declared_dependency("git", "libtool", "build"). +node("libtool") :- depends_on("git", "libtool"), node("git"). + +declared_dependency("git", "m4", "build"). +node("m4") :- depends_on("git", "m4"), node("git"). + +declared_dependency("git", "openssl", "build"). +declared_dependency("git", "openssl", "link"). +node("openssl") :- depends_on("git", "openssl"), node("git"). + +declared_dependency("git", "pcre", "build") :- node("git"), 1 { version("git", "2.7.1"); version("git", "2.7.3"); version("git", "2.8.0"); version("git", "2.8.1"); version("git", "2.8.2"); version("git", "2.8.3"); version("git", "2.8.4"); version("git", "2.9.0"); version("git", "2.9.1"); version("git", "2.9.2"); version("git", "2.9.3"); version("git", "2.11.0"); version("git", "2.11.1"); version("git", "2.12.0"); version("git", "2.12.1"); version("git", "2.12.2"); version("git", "2.13.0") } 1. +declared_dependency("git", "pcre", "link") :- node("git"), 1 { version("git", "2.7.1"); version("git", "2.7.3"); version("git", "2.8.0"); version("git", "2.8.1"); version("git", "2.8.2"); version("git", "2.8.3"); version("git", "2.8.4"); version("git", "2.9.0"); version("git", "2.9.1"); version("git", "2.9.2"); version("git", "2.9.3"); version("git", "2.11.0"); version("git", "2.11.1"); version("git", "2.12.0"); version("git", "2.12.1"); version("git", "2.12.2"); version("git", "2.13.0") } 1. +node("pcre") :- depends_on("git", "pcre"), node("git"), 1 { version("git", "2.7.1"); version("git", "2.7.3"); version("git", "2.8.0"); version("git", "2.8.1"); version("git", "2.8.2"); version("git", "2.8.3"); version("git", "2.8.4"); version("git", "2.9.0"); version("git", "2.9.1"); version("git", "2.9.2"); version("git", "2.9.3"); version("git", "2.11.0"); version("git", "2.11.1"); version("git", "2.12.0"); version("git", "2.12.1"); version("git", "2.12.2"); version("git", "2.13.0") } 1. + +declared_dependency("git", "pcre2", "build") :- node("git"), 1 { version("git", "2.14.1"); version("git", "2.15.1"); version("git", "2.17.0"); version("git", "2.17.1"); version("git", "2.18.0"); version("git", "2.19.1"); version("git", "2.19.2"); version("git", "2.20.1"); version("git", "2.21.0"); version("git", "2.25.0") } 1. +declared_dependency("git", "pcre2", "link") :- node("git"), 1 { version("git", "2.14.1"); version("git", "2.15.1"); version("git", "2.17.0"); version("git", "2.17.1"); version("git", "2.18.0"); version("git", "2.19.1"); version("git", "2.19.2"); version("git", "2.20.1"); version("git", "2.21.0"); version("git", "2.25.0") } 1. +node("pcre2") :- depends_on("git", "pcre2"), node("git"), 1 { version("git", "2.14.1"); version("git", "2.15.1"); version("git", "2.17.0"); version("git", "2.17.1"); version("git", "2.18.0"); version("git", "2.19.1"); version("git", "2.19.2"); version("git", "2.20.1"); version("git", "2.21.0"); version("git", "2.25.0") } 1. + +declared_dependency("git", "perl", "build"). +declared_dependency("git", "perl", "link"). +node("perl") :- depends_on("git", "perl"), node("git"). + +declared_dependency("git", "tk", "build") :- node("git"), variant_value("git", "tcltk", "True"). +declared_dependency("git", "tk", "link") :- node("git"), variant_value("git", "tcltk", "True"). +node("tk") :- depends_on("git", "tk"), node("git"), variant_value("git", "tcltk", "True"). + +declared_dependency("git", "zlib", "build"). +declared_dependency("git", "zlib", "link"). +node("zlib") :- depends_on("git", "zlib"), node("git"). + + +%---------------------------------------------------------------------------- +% Package: glib +%---------------------------------------------------------------------------- +version_declared("glib", "2.56.3", 0). +version_declared("glib", "2.56.2", 1). +version_declared("glib", "2.56.1", 2). +version_declared("glib", "2.56.0", 3). +version_declared("glib", "2.55.1", 4). +version_declared("glib", "2.53.1", 5). +version_declared("glib", "2.49.7", 6). +version_declared("glib", "2.49.4", 7). +version_declared("glib", "2.48.1", 8). +version_declared("glib", "2.42.1", 9). + +variant("glib", "libmount"). +variant_single_value("glib", "libmount"). +variant_default_value("glib", "libmount", "False"). +variant_possible_value("glib", "libmount", "False"). +variant_possible_value("glib", "libmount", "True"). + +variant("glib", "tracing"). +not variant_single_value("glib", "tracing"). +variant_default_value("glib", "tracing", "none"). +variant_possible_value("glib", "tracing", "dtrace"). +variant_possible_value("glib", "tracing", "none"). +variant_possible_value("glib", "tracing", "systemtap"). + +declared_dependency("glib", "gettext", "build"). +declared_dependency("glib", "gettext", "link"). +node("gettext") :- depends_on("glib", "gettext"), node("glib"). + +declared_dependency("glib", "libffi", "build"). +declared_dependency("glib", "libffi", "link"). +node("libffi") :- depends_on("glib", "libffi"), node("glib"). + +declared_dependency("glib", "libiconv", "build"). +declared_dependency("glib", "libiconv", "link"). +node("libiconv") :- depends_on("glib", "libiconv"), node("glib"). + +declared_dependency("glib", "pcre", "build") :- node("glib"), 1 { version("glib", "2.48.1"); version("glib", "2.49.4"); version("glib", "2.49.7"); version("glib", "2.53.1"); version("glib", "2.55.1"); version("glib", "2.56.0"); version("glib", "2.56.1"); version("glib", "2.56.2"); version("glib", "2.56.3") } 1. +declared_dependency("glib", "pcre", "link") :- node("glib"), 1 { version("glib", "2.48.1"); version("glib", "2.49.4"); version("glib", "2.49.7"); version("glib", "2.53.1"); version("glib", "2.55.1"); version("glib", "2.56.0"); version("glib", "2.56.1"); version("glib", "2.56.2"); version("glib", "2.56.3") } 1. +node("pcre") :- depends_on("glib", "pcre"), node("glib"), 1 { version("glib", "2.48.1"); version("glib", "2.49.4"); version("glib", "2.49.7"); version("glib", "2.53.1"); version("glib", "2.55.1"); version("glib", "2.56.0"); version("glib", "2.56.1"); version("glib", "2.56.2"); version("glib", "2.56.3") } 1. +variant_set("pcre", "utf", "True") :- depends_on("glib", "pcre"), node("glib"), 1 { version("glib", "2.48.1"); version("glib", "2.49.4"); version("glib", "2.49.7"); version("glib", "2.53.1"); version("glib", "2.55.1"); version("glib", "2.56.0"); version("glib", "2.56.1"); version("glib", "2.56.2"); version("glib", "2.56.3") } 1. + +declared_dependency("glib", "perl", "build"). +declared_dependency("glib", "perl", "run"). +node("perl") :- depends_on("glib", "perl"), node("glib"). + +declared_dependency("glib", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("glib", "pkgconfig"), node("glib"). + +declared_dependency("glib", "python", "build") :- node("glib"), 1 { version("glib", "2.55.1"); version("glib", "2.56.0"); version("glib", "2.56.1"); version("glib", "2.56.2"); version("glib", "2.56.3") } 1. +declared_dependency("glib", "python", "run") :- node("glib"), 1 { version("glib", "2.55.1"); version("glib", "2.56.0"); version("glib", "2.56.1"); version("glib", "2.56.2"); version("glib", "2.56.3") } 1. +node("python") :- depends_on("glib", "python"), node("glib"), 1 { version("glib", "2.55.1"); version("glib", "2.56.0"); version("glib", "2.56.1"); version("glib", "2.56.2"); version("glib", "2.56.3") } 1. + +declared_dependency("glib", "util-linux", "build") :- node("glib"), variant_value("glib", "libmount", "True"). +declared_dependency("glib", "util-linux", "link") :- node("glib"), variant_value("glib", "libmount", "True"). +node("util-linux") :- depends_on("glib", "util-linux"), node("glib"), variant_value("glib", "libmount", "True"). + +declared_dependency("glib", "zlib", "build"). +declared_dependency("glib", "zlib", "link"). +node("zlib") :- depends_on("glib", "zlib"), node("glib"). + + +%---------------------------------------------------------------------------- +% Package: glproto +%---------------------------------------------------------------------------- +version_declared("glproto", "1.4.17", 0). + +declared_dependency("glproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("glproto", "pkgconfig"), node("glproto"). + +declared_dependency("glproto", "util-macros", "build"). +node("util-macros") :- depends_on("glproto", "util-macros"), node("glproto"). + + +%---------------------------------------------------------------------------- +% Package: gmake +%---------------------------------------------------------------------------- +version_declared("gmake", "4.2.1", 0). +version_declared("gmake", "4.0", 1). + +variant("gmake", "guile"). +variant_single_value("gmake", "guile"). +variant_default_value("gmake", "guile", "False"). +variant_possible_value("gmake", "guile", "False"). +variant_possible_value("gmake", "guile", "True"). + +variant("gmake", "nls"). +variant_single_value("gmake", "nls"). +variant_default_value("gmake", "nls", "True"). +variant_possible_value("gmake", "nls", "False"). +variant_possible_value("gmake", "nls", "True"). + +declared_dependency("gmake", "gettext", "build") :- node("gmake"), variant_value("gmake", "nls", "True"). +declared_dependency("gmake", "gettext", "link") :- node("gmake"), variant_value("gmake", "nls", "True"). +node("gettext") :- depends_on("gmake", "gettext"), node("gmake"), variant_value("gmake", "nls", "True"). + +declared_dependency("gmake", "guile", "build") :- node("gmake"), variant_value("gmake", "guile", "True"). +declared_dependency("gmake", "guile", "link") :- node("gmake"), variant_value("gmake", "guile", "True"). +node("guile") :- depends_on("gmake", "guile"), node("gmake"), variant_value("gmake", "guile", "True"). + +declared_dependency("gmake", "texinfo", "build"). +node("texinfo") :- depends_on("gmake", "texinfo"), node("gmake"). + + +%---------------------------------------------------------------------------- +% Package: gmp +%---------------------------------------------------------------------------- +version_declared("gmp", "6.1.2", 0). +version_declared("gmp", "6.1.1", 1). +version_declared("gmp", "6.1.0", 2). +version_declared("gmp", "6.0.0a", 3). +version_declared("gmp", "5.1.3", 4). +version_declared("gmp", "4.3.2", 5). + +declared_dependency("gmp", "autoconf", "build"). +node("autoconf") :- depends_on("gmp", "autoconf"), node("gmp"). + +declared_dependency("gmp", "automake", "build"). +node("automake") :- depends_on("gmp", "automake"), node("gmp"). + +declared_dependency("gmp", "libtool", "build"). +node("libtool") :- depends_on("gmp", "libtool"), node("gmp"). + +declared_dependency("gmp", "m4", "build"). +node("m4") :- depends_on("gmp", "m4"), node("gmp"). + + +%---------------------------------------------------------------------------- +% Package: gnutls +%---------------------------------------------------------------------------- +version_declared("gnutls", "3.6.8", 0). +version_declared("gnutls", "3.6.7.1", 1). +version_declared("gnutls", "3.5.19", 2). +version_declared("gnutls", "3.5.13", 3). +version_declared("gnutls", "3.5.10", 4). +version_declared("gnutls", "3.5.9", 5). +version_declared("gnutls", "3.3.9", 6). + +variant("gnutls", "guile"). +variant_single_value("gnutls", "guile"). +variant_default_value("gnutls", "guile", "False"). +variant_possible_value("gnutls", "guile", "False"). +variant_possible_value("gnutls", "guile", "True"). + +variant("gnutls", "zlib"). +variant_single_value("gnutls", "zlib"). +variant_default_value("gnutls", "zlib", "True"). +variant_possible_value("gnutls", "zlib", "False"). +variant_possible_value("gnutls", "zlib", "True"). + +declared_dependency("gnutls", "gettext", "build"). +declared_dependency("gnutls", "gettext", "link"). +node("gettext") :- depends_on("gnutls", "gettext"), node("gnutls"). + +declared_dependency("gnutls", "guile", "build") :- node("gnutls"), variant_value("gnutls", "guile", "True"). +declared_dependency("gnutls", "guile", "link") :- node("gnutls"), variant_value("gnutls", "guile", "True"). +node("guile") :- depends_on("gnutls", "guile"), node("gnutls"), variant_value("gnutls", "guile", "True"). + +declared_dependency("gnutls", "libidn2", "build") :- node("gnutls"), 1 { version("gnutls", "3.3.9"); version("gnutls", "3.5.9"); version("gnutls", "3.5.10"); version("gnutls", "3.5.13"); version("gnutls", "3.5.19") } 1. +declared_dependency("gnutls", "libidn2", "link") :- node("gnutls"), 1 { version("gnutls", "3.3.9"); version("gnutls", "3.5.9"); version("gnutls", "3.5.10"); version("gnutls", "3.5.13"); version("gnutls", "3.5.19") } 1. +node("libidn2") :- depends_on("gnutls", "libidn2"), node("gnutls"), 1 { version("gnutls", "3.3.9"); version("gnutls", "3.5.9"); version("gnutls", "3.5.10"); version("gnutls", "3.5.13"); version("gnutls", "3.5.19") } 1. +1 { version("libidn2", "2.0.5") } 1 :- depends_on("gnutls", "libidn2"), node("gnutls"), 1 { version("gnutls", "3.3.9"); version("gnutls", "3.5.9"); version("gnutls", "3.5.10"); version("gnutls", "3.5.13"); version("gnutls", "3.5.19") } 1. + +declared_dependency("gnutls", "nettle", "build") :- node("gnutls"), 1 { version("gnutls", "3.3.9") } 1. +declared_dependency("gnutls", "nettle", "link") :- node("gnutls"), 1 { version("gnutls", "3.3.9") } 1. +node("nettle") :- depends_on("gnutls", "nettle"), node("gnutls"), 1 { version("gnutls", "3.3.9") } 1. +1 { version("nettle", "2.7"); version("nettle", "2.7.1") } 1 :- depends_on("gnutls", "nettle"), node("gnutls"), 1 { version("gnutls", "3.3.9") } 1. +declared_dependency("gnutls", "nettle", "build") :- node("gnutls"), 1 { version("gnutls", "3.5.9"); version("gnutls", "3.5.10"); version("gnutls", "3.5.13"); version("gnutls", "3.5.19"); version("gnutls", "3.6.7.1"); version("gnutls", "3.6.8") } 1. +declared_dependency("gnutls", "nettle", "link") :- node("gnutls"), 1 { version("gnutls", "3.5.9"); version("gnutls", "3.5.10"); version("gnutls", "3.5.13"); version("gnutls", "3.5.19"); version("gnutls", "3.6.7.1"); version("gnutls", "3.6.8") } 1. +node("nettle") :- depends_on("gnutls", "nettle"), node("gnutls"), 1 { version("gnutls", "3.5.9"); version("gnutls", "3.5.10"); version("gnutls", "3.5.13"); version("gnutls", "3.5.19"); version("gnutls", "3.6.7.1"); version("gnutls", "3.6.8") } 1. +declared_dependency("gnutls", "nettle", "build") :- node("gnutls"), 1 { version("gnutls", "3.6.7.1"); version("gnutls", "3.6.8") } 1. +declared_dependency("gnutls", "nettle", "link") :- node("gnutls"), 1 { version("gnutls", "3.6.7.1"); version("gnutls", "3.6.8") } 1. +node("nettle") :- depends_on("gnutls", "nettle"), node("gnutls"), 1 { version("gnutls", "3.6.7.1"); version("gnutls", "3.6.8") } 1. +1 { version("nettle", "3.4"); version("nettle", "3.4.1") } 1 :- depends_on("gnutls", "nettle"), node("gnutls"), 1 { version("gnutls", "3.6.7.1"); version("gnutls", "3.6.8") } 1. + +declared_dependency("gnutls", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("gnutls", "pkgconfig"), node("gnutls"). + +declared_dependency("gnutls", "zlib", "build") :- node("gnutls"), variant_value("gnutls", "zlib", "True"). +declared_dependency("gnutls", "zlib", "link") :- node("gnutls"), variant_value("gnutls", "zlib", "True"). +node("zlib") :- depends_on("gnutls", "zlib"), node("gnutls"), variant_value("gnutls", "zlib", "True"). + + +%---------------------------------------------------------------------------- +% Package: gobject-introspection +%---------------------------------------------------------------------------- +version_declared("gobject-introspection", "1.56.1", 0). +version_declared("gobject-introspection", "1.49.2", 1). +version_declared("gobject-introspection", "1.48.0", 2). + +declared_dependency("gobject-introspection", "bison", "build"). +node("bison") :- depends_on("gobject-introspection", "bison"), node("gobject-introspection"). + +declared_dependency("gobject-introspection", "cairo", "build"). +declared_dependency("gobject-introspection", "cairo", "link"). +node("cairo") :- depends_on("gobject-introspection", "cairo"), node("gobject-introspection"). + +declared_dependency("gobject-introspection", "flex", "build"). +node("flex") :- depends_on("gobject-introspection", "flex"), node("gobject-introspection"). + +declared_dependency("gobject-introspection", "glib", "build") :- node("gobject-introspection"), 1 { version("gobject-introspection", "1.48.0") } 1. +declared_dependency("gobject-introspection", "glib", "link") :- node("gobject-introspection"), 1 { version("gobject-introspection", "1.48.0") } 1. +node("glib") :- depends_on("gobject-introspection", "glib"), node("gobject-introspection"), 1 { version("gobject-introspection", "1.48.0") } 1. +1 { version("glib", "2.48.1") } 1 :- depends_on("gobject-introspection", "glib"), node("gobject-introspection"), 1 { version("gobject-introspection", "1.48.0") } 1. +declared_dependency("gobject-introspection", "glib", "build") :- node("gobject-introspection"), 1 { version("gobject-introspection", "1.49.2"); version("gobject-introspection", "1.56.1") } 1. +declared_dependency("gobject-introspection", "glib", "link") :- node("gobject-introspection"), 1 { version("gobject-introspection", "1.49.2"); version("gobject-introspection", "1.56.1") } 1. +node("glib") :- depends_on("gobject-introspection", "glib"), node("gobject-introspection"), 1 { version("gobject-introspection", "1.49.2"); version("gobject-introspection", "1.56.1") } 1. +1 { version("glib", "2.49.4"); version("glib", "2.49.7"); version("glib", "2.53.1"); version("glib", "2.55.1"); version("glib", "2.56.0"); version("glib", "2.56.1"); version("glib", "2.56.2"); version("glib", "2.56.3") } 1 :- depends_on("gobject-introspection", "glib"), node("gobject-introspection"), 1 { version("gobject-introspection", "1.49.2"); version("gobject-introspection", "1.56.1") } 1. + +declared_dependency("gobject-introspection", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("gobject-introspection", "pkgconfig"), node("gobject-introspection"). + +declared_dependency("gobject-introspection", "python", "build"). +declared_dependency("gobject-introspection", "python", "link"). +node("python") :- depends_on("gobject-introspection", "python"), node("gobject-introspection"). + +declared_dependency("gobject-introspection", "sed", "build") :- node("gobject-introspection"), node_platform("gobject-introspection", "darwin"). +node("sed") :- depends_on("gobject-introspection", "sed"), node("gobject-introspection"), node_platform("gobject-introspection", "darwin"). + + +%---------------------------------------------------------------------------- +% Package: gperf +%---------------------------------------------------------------------------- +version_declared("gperf", "3.0.4", 0). + + +%---------------------------------------------------------------------------- +% Package: graphite2 +%---------------------------------------------------------------------------- +version_declared("graphite2", "1.3.13", 0). + +variant("graphite2", "build_type"). +variant_single_value("graphite2", "build_type"). +variant_default_value("graphite2", "build_type", "RelWithDebInfo"). +variant_possible_value("graphite2", "build_type", "Debug"). +variant_possible_value("graphite2", "build_type", "MinSizeRel"). +variant_possible_value("graphite2", "build_type", "RelWithDebInfo"). +variant_possible_value("graphite2", "build_type", "Release"). + +declared_dependency("graphite2", "cmake", "build"). +node("cmake") :- depends_on("graphite2", "cmake"), node("graphite2"). + + +%---------------------------------------------------------------------------- +% Package: gtkplus +%---------------------------------------------------------------------------- +version_declared("gtkplus", "3.20.10", 0). +version_declared("gtkplus", "2.24.32", 1). +version_declared("gtkplus", "2.24.31", 2). +version_declared("gtkplus", "2.24.25", 3). + +variant("gtkplus", "cups"). +variant_single_value("gtkplus", "cups"). +variant_default_value("gtkplus", "cups", "False"). +variant_possible_value("gtkplus", "cups", "False"). +variant_possible_value("gtkplus", "cups", "True"). + +declared_dependency("gtkplus", "at-spi2-atk", "build") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +declared_dependency("gtkplus", "at-spi2-atk", "link") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +node("at-spi2-atk") :- depends_on("gtkplus", "at-spi2-atk"), node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. + +declared_dependency("gtkplus", "atk", "build"). +declared_dependency("gtkplus", "atk", "link"). +node("atk") :- depends_on("gtkplus", "atk"), node("gtkplus"). + +declared_dependency("gtkplus", "cairo", "build"). +declared_dependency("gtkplus", "cairo", "link"). +node("cairo") :- depends_on("gtkplus", "cairo"), node("gtkplus"). +variant_set("cairo", "X", "True") :- depends_on("gtkplus", "cairo"), node("gtkplus"). +variant_set("cairo", "gobject", "True") :- depends_on("gtkplus", "cairo"), node("gtkplus"). +variant_set("cairo", "pdf", "True") :- depends_on("gtkplus", "cairo"), node("gtkplus"). + +declared_dependency("gtkplus", "cups", "build") :- node("gtkplus"), variant_value("gtkplus", "cups", "True"). +declared_dependency("gtkplus", "cups", "link") :- node("gtkplus"), variant_value("gtkplus", "cups", "True"). +node("cups") :- depends_on("gtkplus", "cups"), node("gtkplus"), variant_value("gtkplus", "cups", "True"). + +declared_dependency("gtkplus", "fixesproto", "build") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +declared_dependency("gtkplus", "fixesproto", "link") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +node("fixesproto") :- depends_on("gtkplus", "fixesproto"), node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. + +declared_dependency("gtkplus", "gdk-pixbuf", "build"). +declared_dependency("gtkplus", "gdk-pixbuf", "link"). +node("gdk-pixbuf") :- depends_on("gtkplus", "gdk-pixbuf"), node("gtkplus"). + +declared_dependency("gtkplus", "gettext", "build") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +declared_dependency("gtkplus", "gettext", "link") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +node("gettext") :- depends_on("gtkplus", "gettext"), node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. + +declared_dependency("gtkplus", "glib", "build"). +declared_dependency("gtkplus", "glib", "link"). +node("glib") :- depends_on("gtkplus", "glib"), node("gtkplus"). + +declared_dependency("gtkplus", "gobject-introspection", "build"). +declared_dependency("gtkplus", "gobject-introspection", "link"). +node("gobject-introspection") :- depends_on("gtkplus", "gobject-introspection"), node("gtkplus"). + +declared_dependency("gtkplus", "inputproto", "build") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +declared_dependency("gtkplus", "inputproto", "link") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +node("inputproto") :- depends_on("gtkplus", "inputproto"), node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. + +declared_dependency("gtkplus", "libepoxy", "build") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +declared_dependency("gtkplus", "libepoxy", "link") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +node("libepoxy") :- depends_on("gtkplus", "libepoxy"), node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. + +declared_dependency("gtkplus", "libxi", "build") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +declared_dependency("gtkplus", "libxi", "link") :- node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. +node("libxi") :- depends_on("gtkplus", "libxi"), node("gtkplus"), 1 { version("gtkplus", "3.20.10") } 1. + +declared_dependency("gtkplus", "pango", "build"). +declared_dependency("gtkplus", "pango", "link"). +node("pango") :- depends_on("gtkplus", "pango"), node("gtkplus"). +variant_set("pango", "X", "True") :- depends_on("gtkplus", "pango"), node("gtkplus"). + +declared_dependency("gtkplus", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("gtkplus", "pkgconfig"), node("gtkplus"). + +declared_dependency("gtkplus", "shared-mime-info", "build"). +declared_dependency("gtkplus", "shared-mime-info", "link"). +node("shared-mime-info") :- depends_on("gtkplus", "shared-mime-info"), node("gtkplus"). + + +%---------------------------------------------------------------------------- +% Package: guile +%---------------------------------------------------------------------------- +version_declared("guile", "2.2.6", 0). +version_declared("guile", "2.2.5", 1). +version_declared("guile", "2.2.4", 2). +version_declared("guile", "2.2.3", 3). +version_declared("guile", "2.2.2", 4). +version_declared("guile", "2.2.1", 5). +version_declared("guile", "2.2.0", 6). +version_declared("guile", "2.0.14", 7). +version_declared("guile", "2.0.11", 8). + +variant("guile", "readline"). +variant_single_value("guile", "readline"). +variant_default_value("guile", "readline", "True"). +variant_possible_value("guile", "readline", "False"). +variant_possible_value("guile", "readline", "True"). + +variant("guile", "threads"). +variant_single_value("guile", "threads"). +variant_default_value("guile", "threads", "none"). +variant_possible_value("guile", "threads", "dgux386"). +variant_possible_value("guile", "threads", "none"). +variant_possible_value("guile", "threads", "posix"). + +declared_dependency("guile", "bdw-gc", "build") :- node("guile"), variant_value("guile", "threads", "dgux386"). +declared_dependency("guile", "bdw-gc", "link") :- node("guile"), variant_value("guile", "threads", "dgux386"). +node("bdw-gc") :- depends_on("guile", "bdw-gc"), node("guile"), variant_value("guile", "threads", "dgux386"). +variant_set("bdw-gc", "threads", "dgux386") :- depends_on("guile", "bdw-gc"), node("guile"), variant_value("guile", "threads", "dgux386"). +declared_dependency("guile", "bdw-gc", "build") :- node("guile"), variant_value("guile", "threads", "none"). +declared_dependency("guile", "bdw-gc", "link") :- node("guile"), variant_value("guile", "threads", "none"). +node("bdw-gc") :- depends_on("guile", "bdw-gc"), node("guile"), variant_value("guile", "threads", "none"). +variant_set("bdw-gc", "threads", "none") :- depends_on("guile", "bdw-gc"), node("guile"), variant_value("guile", "threads", "none"). +declared_dependency("guile", "bdw-gc", "build") :- node("guile"), variant_value("guile", "threads", "posix"). +declared_dependency("guile", "bdw-gc", "link") :- node("guile"), variant_value("guile", "threads", "posix"). +node("bdw-gc") :- depends_on("guile", "bdw-gc"), node("guile"), variant_value("guile", "threads", "posix"). +variant_set("bdw-gc", "threads", "posix") :- depends_on("guile", "bdw-gc"), node("guile"), variant_value("guile", "threads", "posix"). + +declared_dependency("guile", "gettext", "build"). +declared_dependency("guile", "gettext", "link"). +node("gettext") :- depends_on("guile", "gettext"), node("guile"). + +declared_dependency("guile", "gmp", "build"). +declared_dependency("guile", "gmp", "link"). +node("gmp") :- depends_on("guile", "gmp"), node("guile"). + +declared_dependency("guile", "libffi", "build"). +declared_dependency("guile", "libffi", "link"). +node("libffi") :- depends_on("guile", "libffi"), node("guile"). + +declared_dependency("guile", "libtool", "build"). +declared_dependency("guile", "libtool", "link"). +node("libtool") :- depends_on("guile", "libtool"), node("guile"). + +declared_dependency("guile", "libunistring", "build"). +declared_dependency("guile", "libunistring", "link"). +node("libunistring") :- depends_on("guile", "libunistring"), node("guile"). + +declared_dependency("guile", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("guile", "pkgconfig"), node("guile"). + +declared_dependency("guile", "readline", "build") :- node("guile"), variant_value("guile", "readline", "True"). +declared_dependency("guile", "readline", "link") :- node("guile"), variant_value("guile", "readline", "True"). +node("readline") :- depends_on("guile", "readline"), node("guile"), variant_value("guile", "readline", "True"). + + +%---------------------------------------------------------------------------- +% Package: gzip +%---------------------------------------------------------------------------- +version_declared("gzip", "1.10", 0). + + +%---------------------------------------------------------------------------- +% Package: harfbuzz +%---------------------------------------------------------------------------- +version_declared("harfbuzz", "2.3.1", 0). +version_declared("harfbuzz", "2.1.3", 1). +version_declared("harfbuzz", "1.9.0", 2). +version_declared("harfbuzz", "1.4.6", 3). +version_declared("harfbuzz", "0.9.37", 4). + +variant("harfbuzz", "graphite2"). +variant_single_value("harfbuzz", "graphite2"). +variant_default_value("harfbuzz", "graphite2", "False"). +variant_possible_value("harfbuzz", "graphite2", "False"). +variant_possible_value("harfbuzz", "graphite2", "True"). + +declared_dependency("harfbuzz", "cairo", "build"). +declared_dependency("harfbuzz", "cairo", "link"). +node("cairo") :- depends_on("harfbuzz", "cairo"), node("harfbuzz"). + +declared_dependency("harfbuzz", "freetype", "build"). +declared_dependency("harfbuzz", "freetype", "link"). +node("freetype") :- depends_on("harfbuzz", "freetype"), node("harfbuzz"). + +declared_dependency("harfbuzz", "glib", "build"). +declared_dependency("harfbuzz", "glib", "link"). +node("glib") :- depends_on("harfbuzz", "glib"), node("harfbuzz"). + +declared_dependency("harfbuzz", "graphite2", "build") :- node("harfbuzz"), variant_value("harfbuzz", "graphite2", "True"). +declared_dependency("harfbuzz", "graphite2", "link") :- node("harfbuzz"), variant_value("harfbuzz", "graphite2", "True"). +node("graphite2") :- depends_on("harfbuzz", "graphite2"), node("harfbuzz"), variant_value("harfbuzz", "graphite2", "True"). + +declared_dependency("harfbuzz", "icu4c", "build"). +declared_dependency("harfbuzz", "icu4c", "link"). +node("icu4c") :- depends_on("harfbuzz", "icu4c"), node("harfbuzz"). + +declared_dependency("harfbuzz", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("harfbuzz", "pkgconfig"), node("harfbuzz"). + +declared_dependency("harfbuzz", "zlib", "build"). +declared_dependency("harfbuzz", "zlib", "link"). +node("zlib") :- depends_on("harfbuzz", "zlib"), node("harfbuzz"). + + +%---------------------------------------------------------------------------- +% Package: hdf5 +%---------------------------------------------------------------------------- +version_declared("hdf5", "1.10.6", 0). +version_declared("hdf5", "1.10.5", 1). +version_declared("hdf5", "1.10.4", 2). +version_declared("hdf5", "1.10.3", 3). +version_declared("hdf5", "1.10.2", 4). +version_declared("hdf5", "1.10.1", 5). +version_declared("hdf5", "1.10.0-patch1", 6). +version_declared("hdf5", "1.10.0", 7). +version_declared("hdf5", "1.8.21", 8). +version_declared("hdf5", "1.8.19", 9). +version_declared("hdf5", "1.8.18", 10). +version_declared("hdf5", "1.8.17", 11). +version_declared("hdf5", "1.8.16", 12). +version_declared("hdf5", "1.8.15", 13). +version_declared("hdf5", "1.8.14", 14). +version_declared("hdf5", "1.8.13", 15). +version_declared("hdf5", "1.8.12", 16). +version_declared("hdf5", "1.8.10", 17). +version_declared("hdf5", "develop", 18). + +variant("hdf5", "cxx"). +variant_single_value("hdf5", "cxx"). +variant_default_value("hdf5", "cxx", "False"). +variant_possible_value("hdf5", "cxx", "False"). +variant_possible_value("hdf5", "cxx", "True"). + +variant("hdf5", "debug"). +variant_single_value("hdf5", "debug"). +variant_default_value("hdf5", "debug", "False"). +variant_possible_value("hdf5", "debug", "False"). +variant_possible_value("hdf5", "debug", "True"). + +variant("hdf5", "fortran"). +variant_single_value("hdf5", "fortran"). +variant_default_value("hdf5", "fortran", "False"). +variant_possible_value("hdf5", "fortran", "False"). +variant_possible_value("hdf5", "fortran", "True"). + +variant("hdf5", "hl"). +variant_single_value("hdf5", "hl"). +variant_default_value("hdf5", "hl", "False"). +variant_possible_value("hdf5", "hl", "False"). +variant_possible_value("hdf5", "hl", "True"). + +variant("hdf5", "mpi"). +variant_single_value("hdf5", "mpi"). +variant_default_value("hdf5", "mpi", "True"). +variant_possible_value("hdf5", "mpi", "False"). +variant_possible_value("hdf5", "mpi", "True"). + +variant("hdf5", "pic"). +variant_single_value("hdf5", "pic"). +variant_default_value("hdf5", "pic", "True"). +variant_possible_value("hdf5", "pic", "False"). +variant_possible_value("hdf5", "pic", "True"). + +variant("hdf5", "shared"). +variant_single_value("hdf5", "shared"). +variant_default_value("hdf5", "shared", "True"). +variant_possible_value("hdf5", "shared", "False"). +variant_possible_value("hdf5", "shared", "True"). + +variant("hdf5", "szip"). +variant_single_value("hdf5", "szip"). +variant_default_value("hdf5", "szip", "False"). +variant_possible_value("hdf5", "szip", "False"). +variant_possible_value("hdf5", "szip", "True"). + +variant("hdf5", "threadsafe"). +variant_single_value("hdf5", "threadsafe"). +variant_default_value("hdf5", "threadsafe", "False"). +variant_possible_value("hdf5", "threadsafe", "False"). +variant_possible_value("hdf5", "threadsafe", "True"). + +declared_dependency("hdf5", "autoconf", "build") :- node("hdf5"), 1 { version("hdf5", "develop") } 1. +node("autoconf") :- depends_on("hdf5", "autoconf"), node("hdf5"), 1 { version("hdf5", "develop") } 1. + +declared_dependency("hdf5", "automake", "build") :- node("hdf5"), 1 { version("hdf5", "develop") } 1. +node("automake") :- depends_on("hdf5", "automake"), node("hdf5"), 1 { version("hdf5", "develop") } 1. + +declared_dependency("hdf5", "libtool", "build") :- node("hdf5"), 1 { version("hdf5", "develop") } 1. +node("libtool") :- depends_on("hdf5", "libtool"), node("hdf5"), 1 { version("hdf5", "develop") } 1. + +declared_dependency("hdf5", "m4", "build") :- node("hdf5"), 1 { version("hdf5", "develop") } 1. +node("m4") :- depends_on("hdf5", "m4"), node("hdf5"), 1 { version("hdf5", "develop") } 1. + +declared_dependency("hdf5", "mpi", "build") :- node("hdf5"), variant_value("hdf5", "mpi", "True"). +declared_dependency("hdf5", "mpi", "link") :- node("hdf5"), variant_value("hdf5", "mpi", "True"). +node("mpi") :- depends_on("hdf5", "mpi"), node("hdf5"), variant_value("hdf5", "mpi", "True"). + +declared_dependency("hdf5", "szip", "build") :- node("hdf5"), variant_value("hdf5", "szip", "True"). +declared_dependency("hdf5", "szip", "link") :- node("hdf5"), variant_value("hdf5", "szip", "True"). +node("szip") :- depends_on("hdf5", "szip"), node("hdf5"), variant_value("hdf5", "szip", "True"). + +declared_dependency("hdf5", "zlib", "build"). +declared_dependency("hdf5", "zlib", "link"). +node("zlib") :- depends_on("hdf5", "zlib"), node("hdf5"). + + +%---------------------------------------------------------------------------- +% Package: help2man +%---------------------------------------------------------------------------- +version_declared("help2man", "1.47.11", 0). +version_declared("help2man", "1.47.8", 1). +version_declared("help2man", "1.47.4", 2). + +declared_dependency("help2man", "gettext", "build"). +node("gettext") :- depends_on("help2man", "gettext"), node("help2man"). + +declared_dependency("help2man", "perl", "build"). +declared_dependency("help2man", "perl", "run"). +node("perl") :- depends_on("help2man", "perl"), node("help2man"). + + +%---------------------------------------------------------------------------- +% Package: hwloc +%---------------------------------------------------------------------------- +version_declared("hwloc", "2.1.0", 0). +version_declared("hwloc", "2.0.2", 1). +version_declared("hwloc", "2.0.1", 2). +version_declared("hwloc", "2.0.0", 3). +version_declared("hwloc", "1.11.11", 4). +version_declared("hwloc", "1.11.10", 5). +version_declared("hwloc", "1.11.9", 6). +version_declared("hwloc", "1.11.8", 7). +version_declared("hwloc", "1.11.7", 8). +version_declared("hwloc", "1.11.6", 9). +version_declared("hwloc", "1.11.5", 10). +version_declared("hwloc", "1.11.4", 11). +version_declared("hwloc", "1.11.3", 12). +version_declared("hwloc", "1.11.2", 13). +version_declared("hwloc", "1.11.1", 14). +version_declared("hwloc", "1.9", 15). +version_declared("hwloc", "master", 16). + +variant("hwloc", "cairo"). +variant_single_value("hwloc", "cairo"). +variant_default_value("hwloc", "cairo", "False"). +variant_possible_value("hwloc", "cairo", "False"). +variant_possible_value("hwloc", "cairo", "True"). + +variant("hwloc", "cuda"). +variant_single_value("hwloc", "cuda"). +variant_default_value("hwloc", "cuda", "False"). +variant_possible_value("hwloc", "cuda", "False"). +variant_possible_value("hwloc", "cuda", "True"). + +variant("hwloc", "gl"). +variant_single_value("hwloc", "gl"). +variant_default_value("hwloc", "gl", "False"). +variant_possible_value("hwloc", "gl", "False"). +variant_possible_value("hwloc", "gl", "True"). + +variant("hwloc", "libxml2"). +variant_single_value("hwloc", "libxml2"). +variant_default_value("hwloc", "libxml2", "True"). +variant_possible_value("hwloc", "libxml2", "False"). +variant_possible_value("hwloc", "libxml2", "True"). + +variant("hwloc", "nvml"). +variant_single_value("hwloc", "nvml"). +variant_default_value("hwloc", "nvml", "False"). +variant_possible_value("hwloc", "nvml", "False"). +variant_possible_value("hwloc", "nvml", "True"). + +variant("hwloc", "pci"). +variant_single_value("hwloc", "pci"). +variant_default_value("hwloc", "pci", "False"). +variant_possible_value("hwloc", "pci", "False"). +variant_possible_value("hwloc", "pci", "True"). + +variant("hwloc", "shared"). +variant_single_value("hwloc", "shared"). +variant_default_value("hwloc", "shared", "True"). +variant_possible_value("hwloc", "shared", "False"). +variant_possible_value("hwloc", "shared", "True"). + +declared_dependency("hwloc", "autoconf", "build") :- node("hwloc"), 1 { version("hwloc", "master") } 1. +node("autoconf") :- depends_on("hwloc", "autoconf"), node("hwloc"), 1 { version("hwloc", "master") } 1. + +declared_dependency("hwloc", "automake", "build") :- node("hwloc"), 1 { version("hwloc", "master") } 1. +node("automake") :- depends_on("hwloc", "automake"), node("hwloc"), 1 { version("hwloc", "master") } 1. + +declared_dependency("hwloc", "cairo", "build") :- node("hwloc"), variant_value("hwloc", "cairo", "True"). +declared_dependency("hwloc", "cairo", "link") :- node("hwloc"), variant_value("hwloc", "cairo", "True"). +node("cairo") :- depends_on("hwloc", "cairo"), node("hwloc"), variant_value("hwloc", "cairo", "True"). + +declared_dependency("hwloc", "cuda", "build") :- node("hwloc"), variant_value("hwloc", "cuda", "True"). +declared_dependency("hwloc", "cuda", "link") :- node("hwloc"), variant_value("hwloc", "cuda", "True"). +node("cuda") :- depends_on("hwloc", "cuda"), node("hwloc"), variant_value("hwloc", "cuda", "True"). +declared_dependency("hwloc", "cuda", "build") :- node("hwloc"), variant_value("hwloc", "nvml", "True"). +declared_dependency("hwloc", "cuda", "link") :- node("hwloc"), variant_value("hwloc", "nvml", "True"). +node("cuda") :- depends_on("hwloc", "cuda"), node("hwloc"), variant_value("hwloc", "nvml", "True"). + +declared_dependency("hwloc", "gl", "build") :- node("hwloc"), variant_value("hwloc", "gl", "True"). +declared_dependency("hwloc", "gl", "link") :- node("hwloc"), variant_value("hwloc", "gl", "True"). +node("gl") :- depends_on("hwloc", "gl"), node("hwloc"), variant_value("hwloc", "gl", "True"). + +declared_dependency("hwloc", "libpciaccess", "build") :- node("hwloc"), variant_value("hwloc", "pci", "True"). +declared_dependency("hwloc", "libpciaccess", "link") :- node("hwloc"), variant_value("hwloc", "pci", "True"). +node("libpciaccess") :- depends_on("hwloc", "libpciaccess"), node("hwloc"), variant_value("hwloc", "pci", "True"). + +declared_dependency("hwloc", "libtool", "build") :- node("hwloc"), 1 { version("hwloc", "master") } 1. +node("libtool") :- depends_on("hwloc", "libtool"), node("hwloc"), 1 { version("hwloc", "master") } 1. + +declared_dependency("hwloc", "libxml2", "build") :- node("hwloc"), variant_value("hwloc", "libxml2", "True"). +declared_dependency("hwloc", "libxml2", "link") :- node("hwloc"), variant_value("hwloc", "libxml2", "True"). +node("libxml2") :- depends_on("hwloc", "libxml2"), node("hwloc"), variant_value("hwloc", "libxml2", "True"). + +declared_dependency("hwloc", "m4", "build") :- node("hwloc"), 1 { version("hwloc", "master") } 1. +node("m4") :- depends_on("hwloc", "m4"), node("hwloc"), 1 { version("hwloc", "master") } 1. + +declared_dependency("hwloc", "numactl", "build") :- node("hwloc"), 1 { version("hwloc", "1.9"); version("hwloc", "1.11.1"); version("hwloc", "1.11.2"); version("hwloc", "1.11.3"); version("hwloc", "1.11.4"); version("hwloc", "1.11.5"); version("hwloc", "1.11.6"); version("hwloc", "1.11.7"); version("hwloc", "1.11.8"); version("hwloc", "1.11.9"); version("hwloc", "1.11.10"); version("hwloc", "1.11.11") } 1, node_platform("hwloc", "linux"). +declared_dependency("hwloc", "numactl", "link") :- node("hwloc"), 1 { version("hwloc", "1.9"); version("hwloc", "1.11.1"); version("hwloc", "1.11.2"); version("hwloc", "1.11.3"); version("hwloc", "1.11.4"); version("hwloc", "1.11.5"); version("hwloc", "1.11.6"); version("hwloc", "1.11.7"); version("hwloc", "1.11.8"); version("hwloc", "1.11.9"); version("hwloc", "1.11.10"); version("hwloc", "1.11.11") } 1, node_platform("hwloc", "linux"). +node("numactl") :- depends_on("hwloc", "numactl"), node("hwloc"), 1 { version("hwloc", "1.9"); version("hwloc", "1.11.1"); version("hwloc", "1.11.2"); version("hwloc", "1.11.3"); version("hwloc", "1.11.4"); version("hwloc", "1.11.5"); version("hwloc", "1.11.6"); version("hwloc", "1.11.7"); version("hwloc", "1.11.8"); version("hwloc", "1.11.9"); version("hwloc", "1.11.10"); version("hwloc", "1.11.11") } 1, node_platform("hwloc", "linux"). + +declared_dependency("hwloc", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("hwloc", "pkgconfig"), node("hwloc"). + + +%---------------------------------------------------------------------------- +% Package: ibm-java +%---------------------------------------------------------------------------- + + +%---------------------------------------------------------------------------- +% Package: icedtea +%---------------------------------------------------------------------------- +version_declared("icedtea", "3.9.0", 0). +version_declared("icedtea", "3.8.0", 1). +version_declared("icedtea", "3.7.0", 2). +version_declared("icedtea", "3.6.0", 3). +version_declared("icedtea", "3.5.1", 4). +version_declared("icedtea", "3.5.0", 5). +version_declared("icedtea", "3.4.0", 6). + +variant("icedtea", "X"). +variant_single_value("icedtea", "X"). +variant_default_value("icedtea", "X", "False"). +variant_possible_value("icedtea", "X", "False"). +variant_possible_value("icedtea", "X", "True"). + +variant("icedtea", "shenandoah"). +variant_single_value("icedtea", "shenandoah"). +variant_default_value("icedtea", "shenandoah", "False"). +variant_possible_value("icedtea", "shenandoah", "False"). +variant_possible_value("icedtea", "shenandoah", "True"). + +declared_dependency("icedtea", "alsa-lib", "build"). +declared_dependency("icedtea", "alsa-lib", "link"). +node("alsa-lib") :- depends_on("icedtea", "alsa-lib"), node("icedtea"). + +declared_dependency("icedtea", "cups", "build"). +declared_dependency("icedtea", "cups", "link"). +node("cups") :- depends_on("icedtea", "cups"), node("icedtea"). + +declared_dependency("icedtea", "freetype", "build"). +declared_dependency("icedtea", "freetype", "link"). +node("freetype") :- depends_on("icedtea", "freetype"), node("icedtea"). + +declared_dependency("icedtea", "giflib", "build"). +declared_dependency("icedtea", "giflib", "link"). +node("giflib") :- depends_on("icedtea", "giflib"), node("icedtea"). + +declared_dependency("icedtea", "gmake", "build"). +node("gmake") :- depends_on("icedtea", "gmake"), node("icedtea"). + +declared_dependency("icedtea", "gtkplus", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("gtkplus") :- depends_on("icedtea", "gtkplus"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "gtkplus", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "gtkplus", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("gtkplus") :- depends_on("icedtea", "gtkplus"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "jdk", "build"). +node("jdk") :- depends_on("icedtea", "jdk"), node("icedtea"). + +declared_dependency("icedtea", "jpeg", "build"). +declared_dependency("icedtea", "jpeg", "link"). +node("jpeg") :- depends_on("icedtea", "jpeg"), node("icedtea"). + +declared_dependency("icedtea", "lcms", "build"). +declared_dependency("icedtea", "lcms", "link"). +node("lcms") :- depends_on("icedtea", "lcms"), node("icedtea"). + +declared_dependency("icedtea", "libpng", "build"). +declared_dependency("icedtea", "libpng", "link"). +node("libpng") :- depends_on("icedtea", "libpng"), node("icedtea"). + +declared_dependency("icedtea", "libx11", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libx11") :- depends_on("icedtea", "libx11"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libx11", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libx11", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libx11") :- depends_on("icedtea", "libx11"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "libxau", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libxau") :- depends_on("icedtea", "libxau"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libxau", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libxau", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libxau") :- depends_on("icedtea", "libxau"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "libxcomposite", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libxcomposite") :- depends_on("icedtea", "libxcomposite"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libxcomposite", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libxcomposite", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libxcomposite") :- depends_on("icedtea", "libxcomposite"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "libxdmcp", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libxdmcp") :- depends_on("icedtea", "libxdmcp"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libxdmcp", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libxdmcp", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libxdmcp") :- depends_on("icedtea", "libxdmcp"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "libxext", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libxext") :- depends_on("icedtea", "libxext"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libxext", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libxext", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libxext") :- depends_on("icedtea", "libxext"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "libxi", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libxi") :- depends_on("icedtea", "libxi"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libxi", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libxi", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libxi") :- depends_on("icedtea", "libxi"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "libxinerama", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libxinerama") :- depends_on("icedtea", "libxinerama"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libxinerama", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libxinerama", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libxinerama") :- depends_on("icedtea", "libxinerama"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "libxrender", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libxrender") :- depends_on("icedtea", "libxrender"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libxrender", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libxrender", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libxrender") :- depends_on("icedtea", "libxrender"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "libxt", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libxt") :- depends_on("icedtea", "libxt"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libxt", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libxt", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libxt") :- depends_on("icedtea", "libxt"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "libxtst", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("libxtst") :- depends_on("icedtea", "libxtst"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "libxtst", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "libxtst", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("libxtst") :- depends_on("icedtea", "libxtst"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("icedtea", "pkgconfig"), node("icedtea"). + +declared_dependency("icedtea", "wget", "build"). +node("wget") :- depends_on("icedtea", "wget"), node("icedtea"). + +declared_dependency("icedtea", "xproto", "build") :- node("icedtea"), variant_value("icedtea", "X", "False"). +node("xproto") :- depends_on("icedtea", "xproto"), node("icedtea"), variant_value("icedtea", "X", "False"). +declared_dependency("icedtea", "xproto", "build") :- node("icedtea"), variant_value("icedtea", "X", "True"). +declared_dependency("icedtea", "xproto", "link") :- node("icedtea"), variant_value("icedtea", "X", "True"). +node("xproto") :- depends_on("icedtea", "xproto"), node("icedtea"), variant_value("icedtea", "X", "True"). + +declared_dependency("icedtea", "zlib", "build"). +declared_dependency("icedtea", "zlib", "link"). +node("zlib") :- depends_on("icedtea", "zlib"), node("icedtea"). + + +%---------------------------------------------------------------------------- +% Package: icu4c +%---------------------------------------------------------------------------- +version_declared("icu4c", "65.1", 0). +version_declared("icu4c", "64.1", 1). +version_declared("icu4c", "60.1", 2). +version_declared("icu4c", "58.2", 3). +version_declared("icu4c", "57.1", 4). + +variant("icu4c", "cxxstd"). +variant_single_value("icu4c", "cxxstd"). +variant_default_value("icu4c", "cxxstd", "11"). +variant_possible_value("icu4c", "cxxstd", "11"). +variant_possible_value("icu4c", "cxxstd", "14"). +variant_possible_value("icu4c", "cxxstd", "17"). + +declared_dependency("icu4c", "python", "build") :- node("icu4c"), 1 { version("icu4c", "64.1"); version("icu4c", "65.1") } 1. +node("python") :- depends_on("icu4c", "python"), node("icu4c"), 1 { version("icu4c", "64.1"); version("icu4c", "65.1") } 1. + + +%---------------------------------------------------------------------------- +% Package: inputproto +%---------------------------------------------------------------------------- +version_declared("inputproto", "2.3.2", 0). + +declared_dependency("inputproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("inputproto", "pkgconfig"), node("inputproto"). + +declared_dependency("inputproto", "util-macros", "build"). +node("util-macros") :- depends_on("inputproto", "util-macros"), node("inputproto"). + + +%---------------------------------------------------------------------------- +% Package: intel-mkl +%---------------------------------------------------------------------------- +version_declared("intel-mkl", "2020.0.166", 0). +version_declared("intel-mkl", "2019.5.281", 1). +version_declared("intel-mkl", "2019.4.243", 2). +version_declared("intel-mkl", "2019.3.199", 3). +version_declared("intel-mkl", "2019.2.187", 4). +version_declared("intel-mkl", "2019.1.144", 5). +version_declared("intel-mkl", "2019.0.117", 6). +version_declared("intel-mkl", "2018.4.274", 7). +version_declared("intel-mkl", "2018.3.222", 8). +version_declared("intel-mkl", "2018.2.199", 9). +version_declared("intel-mkl", "2018.1.163", 10). +version_declared("intel-mkl", "2018.0.128", 11). +version_declared("intel-mkl", "2017.4.239", 12). +version_declared("intel-mkl", "2017.3.196", 13). +version_declared("intel-mkl", "2017.2.174", 14). +version_declared("intel-mkl", "2017.1.132", 15). +version_declared("intel-mkl", "2017.0.098", 16). +version_declared("intel-mkl", "11.3.3.210", 17). +version_declared("intel-mkl", "11.3.2.181", 18). + +variant("intel-mkl", "ilp64"). +variant_single_value("intel-mkl", "ilp64"). +variant_default_value("intel-mkl", "ilp64", "False"). +variant_possible_value("intel-mkl", "ilp64", "False"). +variant_possible_value("intel-mkl", "ilp64", "True"). + +variant("intel-mkl", "shared"). +variant_single_value("intel-mkl", "shared"). +variant_default_value("intel-mkl", "shared", "True"). +variant_possible_value("intel-mkl", "shared", "False"). +variant_possible_value("intel-mkl", "shared", "True"). + +variant("intel-mkl", "threads"). +variant_single_value("intel-mkl", "threads"). +variant_default_value("intel-mkl", "threads", "none"). +variant_possible_value("intel-mkl", "threads", "none"). +variant_possible_value("intel-mkl", "threads", "openmp"). +variant_possible_value("intel-mkl", "threads", "tbb"). + +declared_dependency("intel-mkl", "cpio", "build"). +node("cpio") :- depends_on("intel-mkl", "cpio"), node("intel-mkl"). + + +%---------------------------------------------------------------------------- +% Package: intel-mpi +%---------------------------------------------------------------------------- +version_declared("intel-mpi", "2019.6.166", 0). +version_declared("intel-mpi", "2019.5.281", 1). +version_declared("intel-mpi", "2019.4.243", 2). +version_declared("intel-mpi", "2019.3.199", 3). +version_declared("intel-mpi", "2019.2.187", 4). +version_declared("intel-mpi", "2019.1.144", 5). +version_declared("intel-mpi", "2019.0.117", 6). +version_declared("intel-mpi", "2018.4.274", 7). +version_declared("intel-mpi", "2018.3.222", 8). +version_declared("intel-mpi", "2018.2.199", 9). +version_declared("intel-mpi", "2018.1.163", 10). +version_declared("intel-mpi", "2018.0.128", 11). +version_declared("intel-mpi", "2017.4.239", 12). +version_declared("intel-mpi", "2017.3.196", 13). +version_declared("intel-mpi", "2017.2.174", 14). +version_declared("intel-mpi", "2017.1.132", 15). +version_declared("intel-mpi", "5.1.3.223", 16). + + +%---------------------------------------------------------------------------- +% Package: intel-parallel-studio +%---------------------------------------------------------------------------- +version_declared("intel-parallel-studio", "professional.2020.0", 0). +version_declared("intel-parallel-studio", "professional.2019.5", 1). +version_declared("intel-parallel-studio", "professional.2019.4", 2). +version_declared("intel-parallel-studio", "professional.2019.3", 3). +version_declared("intel-parallel-studio", "professional.2019.2", 4). +version_declared("intel-parallel-studio", "professional.2019.1", 5). +version_declared("intel-parallel-studio", "professional.2019.0", 6). +version_declared("intel-parallel-studio", "professional.2018.4", 7). +version_declared("intel-parallel-studio", "professional.2018.3", 8). +version_declared("intel-parallel-studio", "professional.2018.2", 9). +version_declared("intel-parallel-studio", "professional.2018.1", 10). +version_declared("intel-parallel-studio", "professional.2018.0", 11). +version_declared("intel-parallel-studio", "professional.2017.7", 12). +version_declared("intel-parallel-studio", "professional.2017.6", 13). +version_declared("intel-parallel-studio", "professional.2017.5", 14). +version_declared("intel-parallel-studio", "professional.2017.4", 15). +version_declared("intel-parallel-studio", "professional.2017.3", 16). +version_declared("intel-parallel-studio", "professional.2017.2", 17). +version_declared("intel-parallel-studio", "professional.2017.1", 18). +version_declared("intel-parallel-studio", "professional.2017.0", 19). +version_declared("intel-parallel-studio", "professional.2016.4", 20). +version_declared("intel-parallel-studio", "professional.2016.3", 21). +version_declared("intel-parallel-studio", "professional.2016.2", 22). +version_declared("intel-parallel-studio", "professional.2016.1", 23). +version_declared("intel-parallel-studio", "professional.2016.0", 24). +version_declared("intel-parallel-studio", "professional.2015.6", 25). +version_declared("intel-parallel-studio", "professional.2015.1", 26). +version_declared("intel-parallel-studio", "composer.2020.0", 27). +version_declared("intel-parallel-studio", "composer.2019.5", 28). +version_declared("intel-parallel-studio", "composer.2019.4", 29). +version_declared("intel-parallel-studio", "composer.2019.3", 30). +version_declared("intel-parallel-studio", "composer.2019.2", 31). +version_declared("intel-parallel-studio", "composer.2019.1", 32). +version_declared("intel-parallel-studio", "composer.2019.0", 33). +version_declared("intel-parallel-studio", "composer.2018.4", 34). +version_declared("intel-parallel-studio", "composer.2018.3", 35). +version_declared("intel-parallel-studio", "composer.2018.2", 36). +version_declared("intel-parallel-studio", "composer.2018.1", 37). +version_declared("intel-parallel-studio", "composer.2018.0", 38). +version_declared("intel-parallel-studio", "composer.2017.7", 39). +version_declared("intel-parallel-studio", "composer.2017.6", 40). +version_declared("intel-parallel-studio", "composer.2017.5", 41). +version_declared("intel-parallel-studio", "composer.2017.4", 42). +version_declared("intel-parallel-studio", "composer.2017.3", 43). +version_declared("intel-parallel-studio", "composer.2017.2", 44). +version_declared("intel-parallel-studio", "composer.2017.1", 45). +version_declared("intel-parallel-studio", "composer.2017.0", 46). +version_declared("intel-parallel-studio", "composer.2016.4", 47). +version_declared("intel-parallel-studio", "composer.2016.3", 48). +version_declared("intel-parallel-studio", "composer.2016.2", 49). +version_declared("intel-parallel-studio", "composer.2015.6", 50). +version_declared("intel-parallel-studio", "composer.2015.1", 51). +version_declared("intel-parallel-studio", "cluster.2020.0", 52). +version_declared("intel-parallel-studio", "cluster.2019.5", 53). +version_declared("intel-parallel-studio", "cluster.2019.4", 54). +version_declared("intel-parallel-studio", "cluster.2019.3", 55). +version_declared("intel-parallel-studio", "cluster.2019.2", 56). +version_declared("intel-parallel-studio", "cluster.2019.1", 57). +version_declared("intel-parallel-studio", "cluster.2019.0", 58). +version_declared("intel-parallel-studio", "cluster.2018.4", 59). +version_declared("intel-parallel-studio", "cluster.2018.3", 60). +version_declared("intel-parallel-studio", "cluster.2018.2", 61). +version_declared("intel-parallel-studio", "cluster.2018.1", 62). +version_declared("intel-parallel-studio", "cluster.2018.0", 63). +version_declared("intel-parallel-studio", "cluster.2017.7", 64). +version_declared("intel-parallel-studio", "cluster.2017.6", 65). +version_declared("intel-parallel-studio", "cluster.2017.5", 66). +version_declared("intel-parallel-studio", "cluster.2017.4", 67). +version_declared("intel-parallel-studio", "cluster.2017.3", 68). +version_declared("intel-parallel-studio", "cluster.2017.2", 69). +version_declared("intel-parallel-studio", "cluster.2017.1", 70). +version_declared("intel-parallel-studio", "cluster.2017.0", 71). +version_declared("intel-parallel-studio", "cluster.2016.4", 72). +version_declared("intel-parallel-studio", "cluster.2016.3", 73). +version_declared("intel-parallel-studio", "cluster.2016.2", 74). +version_declared("intel-parallel-studio", "cluster.2016.1", 75). +version_declared("intel-parallel-studio", "cluster.2016.0", 76). +version_declared("intel-parallel-studio", "cluster.2015.6", 77). +version_declared("intel-parallel-studio", "cluster.2015.1", 78). + +variant("intel-parallel-studio", "advisor"). +variant_single_value("intel-parallel-studio", "advisor"). +variant_default_value("intel-parallel-studio", "advisor", "False"). +variant_possible_value("intel-parallel-studio", "advisor", "False"). +variant_possible_value("intel-parallel-studio", "advisor", "True"). + +variant("intel-parallel-studio", "auto_dispatch"). +not variant_single_value("intel-parallel-studio", "auto_dispatch"). +variant_default_value("intel-parallel-studio", "auto_dispatch", "none"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "AVX"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "COMMON-AVX512"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "CORE-AVX-I"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "CORE-AVX2"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "CORE-AVX512"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "MIC-AVX512"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "SSE2"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "SSE3"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "SSE4.1"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "SSE4.2"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "SSSE3"). +variant_possible_value("intel-parallel-studio", "auto_dispatch", "none"). + +variant("intel-parallel-studio", "clck"). +variant_single_value("intel-parallel-studio", "clck"). +variant_default_value("intel-parallel-studio", "clck", "False"). +variant_possible_value("intel-parallel-studio", "clck", "False"). +variant_possible_value("intel-parallel-studio", "clck", "True"). + +variant("intel-parallel-studio", "daal"). +variant_single_value("intel-parallel-studio", "daal"). +variant_default_value("intel-parallel-studio", "daal", "True"). +variant_possible_value("intel-parallel-studio", "daal", "False"). +variant_possible_value("intel-parallel-studio", "daal", "True"). + +variant("intel-parallel-studio", "gdb"). +variant_single_value("intel-parallel-studio", "gdb"). +variant_default_value("intel-parallel-studio", "gdb", "False"). +variant_possible_value("intel-parallel-studio", "gdb", "False"). +variant_possible_value("intel-parallel-studio", "gdb", "True"). + +variant("intel-parallel-studio", "ilp64"). +variant_single_value("intel-parallel-studio", "ilp64"). +variant_default_value("intel-parallel-studio", "ilp64", "False"). +variant_possible_value("intel-parallel-studio", "ilp64", "False"). +variant_possible_value("intel-parallel-studio", "ilp64", "True"). + +variant("intel-parallel-studio", "inspector"). +variant_single_value("intel-parallel-studio", "inspector"). +variant_default_value("intel-parallel-studio", "inspector", "False"). +variant_possible_value("intel-parallel-studio", "inspector", "False"). +variant_possible_value("intel-parallel-studio", "inspector", "True"). + +variant("intel-parallel-studio", "ipp"). +variant_single_value("intel-parallel-studio", "ipp"). +variant_default_value("intel-parallel-studio", "ipp", "True"). +variant_possible_value("intel-parallel-studio", "ipp", "False"). +variant_possible_value("intel-parallel-studio", "ipp", "True"). + +variant("intel-parallel-studio", "itac"). +variant_single_value("intel-parallel-studio", "itac"). +variant_default_value("intel-parallel-studio", "itac", "False"). +variant_possible_value("intel-parallel-studio", "itac", "False"). +variant_possible_value("intel-parallel-studio", "itac", "True"). + +variant("intel-parallel-studio", "mkl"). +variant_single_value("intel-parallel-studio", "mkl"). +variant_default_value("intel-parallel-studio", "mkl", "True"). +variant_possible_value("intel-parallel-studio", "mkl", "False"). +variant_possible_value("intel-parallel-studio", "mkl", "True"). + +variant("intel-parallel-studio", "mpi"). +variant_single_value("intel-parallel-studio", "mpi"). +variant_default_value("intel-parallel-studio", "mpi", "True"). +variant_possible_value("intel-parallel-studio", "mpi", "False"). +variant_possible_value("intel-parallel-studio", "mpi", "True"). + +variant("intel-parallel-studio", "newdtags"). +variant_single_value("intel-parallel-studio", "newdtags"). +variant_default_value("intel-parallel-studio", "newdtags", "False"). +variant_possible_value("intel-parallel-studio", "newdtags", "False"). +variant_possible_value("intel-parallel-studio", "newdtags", "True"). + +variant("intel-parallel-studio", "rpath"). +variant_single_value("intel-parallel-studio", "rpath"). +variant_default_value("intel-parallel-studio", "rpath", "True"). +variant_possible_value("intel-parallel-studio", "rpath", "False"). +variant_possible_value("intel-parallel-studio", "rpath", "True"). + +variant("intel-parallel-studio", "shared"). +variant_single_value("intel-parallel-studio", "shared"). +variant_default_value("intel-parallel-studio", "shared", "True"). +variant_possible_value("intel-parallel-studio", "shared", "False"). +variant_possible_value("intel-parallel-studio", "shared", "True"). + +variant("intel-parallel-studio", "tbb"). +variant_single_value("intel-parallel-studio", "tbb"). +variant_default_value("intel-parallel-studio", "tbb", "True"). +variant_possible_value("intel-parallel-studio", "tbb", "False"). +variant_possible_value("intel-parallel-studio", "tbb", "True"). + +variant("intel-parallel-studio", "threads"). +variant_single_value("intel-parallel-studio", "threads"). +variant_default_value("intel-parallel-studio", "threads", "none"). +variant_possible_value("intel-parallel-studio", "threads", "none"). +variant_possible_value("intel-parallel-studio", "threads", "openmp"). + +variant("intel-parallel-studio", "vtune"). +variant_single_value("intel-parallel-studio", "vtune"). +variant_default_value("intel-parallel-studio", "vtune", "False"). +variant_possible_value("intel-parallel-studio", "vtune", "False"). +variant_possible_value("intel-parallel-studio", "vtune", "True"). + + +%---------------------------------------------------------------------------- +% Package: intltool +%---------------------------------------------------------------------------- +version_declared("intltool", "0.51.0", 0). + +declared_dependency("intltool", "perl", "build"). +declared_dependency("intltool", "perl", "run"). +node("perl") :- depends_on("intltool", "perl"), node("intltool"). + +declared_dependency("intltool", "perl-xml-parser", "build"). +declared_dependency("intltool", "perl-xml-parser", "run"). +node("perl-xml-parser") :- depends_on("intltool", "perl-xml-parser"), node("intltool"). + + +%---------------------------------------------------------------------------- +% Package: isl +%---------------------------------------------------------------------------- +version_declared("isl", "0.21", 0). +version_declared("isl", "0.20", 1). +version_declared("isl", "0.19", 2). +version_declared("isl", "0.18", 3). +version_declared("isl", "0.15", 4). +version_declared("isl", "0.14", 5). + +declared_dependency("isl", "gmp", "build"). +declared_dependency("isl", "gmp", "link"). +node("gmp") :- depends_on("isl", "gmp"), node("isl"). + + +%---------------------------------------------------------------------------- +% Package: jdk +%---------------------------------------------------------------------------- +version_declared("jdk", "12.0.2_10", 0). +version_declared("jdk", "12.0.1_12", 1). +version_declared("jdk", "11.0.2_9", 2). +version_declared("jdk", "11.0.1_13", 3). +version_declared("jdk", "10.0.2_13", 4). +version_declared("jdk", "10.0.1_10", 5). +version_declared("jdk", "1.8.0_241-b07", 6). +version_declared("jdk", "1.8.0_231-b11", 7). +version_declared("jdk", "1.8.0_212-b10", 8). +version_declared("jdk", "1.8.0_202-b08", 9). +version_declared("jdk", "1.8.0_141-b15", 10). +version_declared("jdk", "1.8.0_131-b11", 11). + + +%---------------------------------------------------------------------------- +% Package: jemalloc +%---------------------------------------------------------------------------- +version_declared("jemalloc", "5.2.1", 0). +version_declared("jemalloc", "4.5.0", 1). +version_declared("jemalloc", "4.4.0", 2). +version_declared("jemalloc", "4.3.1", 3). +version_declared("jemalloc", "4.2.1", 4). +version_declared("jemalloc", "4.2.0", 5). +version_declared("jemalloc", "4.1.0", 6). +version_declared("jemalloc", "4.0.4", 7). + +variant("jemalloc", "je"). +variant_single_value("jemalloc", "je"). +variant_default_value("jemalloc", "je", "False"). +variant_possible_value("jemalloc", "je", "False"). +variant_possible_value("jemalloc", "je", "True"). + +variant("jemalloc", "prof"). +variant_single_value("jemalloc", "prof"). +variant_default_value("jemalloc", "prof", "False"). +variant_possible_value("jemalloc", "prof", "False"). +variant_possible_value("jemalloc", "prof", "True"). + +variant("jemalloc", "stats"). +variant_single_value("jemalloc", "stats"). +variant_default_value("jemalloc", "stats", "False"). +variant_possible_value("jemalloc", "stats", "False"). +variant_possible_value("jemalloc", "stats", "True"). + + +%---------------------------------------------------------------------------- +% Package: json-c +%---------------------------------------------------------------------------- +version_declared("json-c", "0.13.1", 0). +version_declared("json-c", "0.12.1", 1). +version_declared("json-c", "0.11", 2). + +declared_dependency("json-c", "autoconf", "build"). +node("autoconf") :- depends_on("json-c", "autoconf"), node("json-c"). + + +%---------------------------------------------------------------------------- +% Package: kbproto +%---------------------------------------------------------------------------- +version_declared("kbproto", "1.0.7", 0). + +declared_dependency("kbproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("kbproto", "pkgconfig"), node("kbproto"). + +declared_dependency("kbproto", "util-macros", "build"). +node("util-macros") :- depends_on("kbproto", "util-macros"), node("kbproto"). + + +%---------------------------------------------------------------------------- +% Package: krb5 +%---------------------------------------------------------------------------- +version_declared("krb5", "1.16.1", 0). + +declared_dependency("krb5", "bison", "build"). +node("bison") :- depends_on("krb5", "bison"), node("krb5"). + +declared_dependency("krb5", "openssl", "build"). +declared_dependency("krb5", "openssl", "link"). +node("openssl") :- depends_on("krb5", "openssl"), node("krb5"). + + +%---------------------------------------------------------------------------- +% Package: lcms +%---------------------------------------------------------------------------- +version_declared("lcms", "2.9", 0). +version_declared("lcms", "2.8", 1). +version_declared("lcms", "2.6", 2). + +declared_dependency("lcms", "jpeg", "build"). +declared_dependency("lcms", "jpeg", "link"). +node("jpeg") :- depends_on("lcms", "jpeg"), node("lcms"). + +declared_dependency("lcms", "libtiff", "build"). +declared_dependency("lcms", "libtiff", "link"). +node("libtiff") :- depends_on("lcms", "libtiff"), node("lcms"). + +declared_dependency("lcms", "zlib", "build"). +declared_dependency("lcms", "zlib", "link"). +node("zlib") :- depends_on("lcms", "zlib"), node("lcms"). + + +%---------------------------------------------------------------------------- +% Package: libaec +%---------------------------------------------------------------------------- +version_declared("libaec", "1.0.2", 0). +version_declared("libaec", "1.0.1", 1). +version_declared("libaec", "1.0.0", 2). + +variant("libaec", "build_type"). +variant_single_value("libaec", "build_type"). +variant_default_value("libaec", "build_type", "RelWithDebInfo"). +variant_possible_value("libaec", "build_type", "Debug"). +variant_possible_value("libaec", "build_type", "MinSizeRel"). +variant_possible_value("libaec", "build_type", "RelWithDebInfo"). +variant_possible_value("libaec", "build_type", "Release"). + +declared_dependency("libaec", "cmake", "build"). +node("cmake") :- depends_on("libaec", "cmake"), node("libaec"). + + +%---------------------------------------------------------------------------- +% Package: libaio +%---------------------------------------------------------------------------- +version_declared("libaio", "0.3.110", 0). + + +%---------------------------------------------------------------------------- +% Package: libarchive +%---------------------------------------------------------------------------- +version_declared("libarchive", "3.4.1", 0). +version_declared("libarchive", "3.3.2", 1). +version_declared("libarchive", "3.2.1", 2). +version_declared("libarchive", "3.1.2", 3). +version_declared("libarchive", "3.1.1", 4). +version_declared("libarchive", "3.1.0", 5). + +declared_dependency("libarchive", "bzip2", "build"). +declared_dependency("libarchive", "bzip2", "link"). +node("bzip2") :- depends_on("libarchive", "bzip2"), node("libarchive"). + +declared_dependency("libarchive", "expat", "build"). +declared_dependency("libarchive", "expat", "link"). +node("expat") :- depends_on("libarchive", "expat"), node("libarchive"). + +declared_dependency("libarchive", "libxml2", "build"). +declared_dependency("libarchive", "libxml2", "link"). +node("libxml2") :- depends_on("libarchive", "libxml2"), node("libarchive"). + +declared_dependency("libarchive", "lz4", "build"). +declared_dependency("libarchive", "lz4", "link"). +node("lz4") :- depends_on("libarchive", "lz4"), node("libarchive"). + +declared_dependency("libarchive", "lzo", "build"). +declared_dependency("libarchive", "lzo", "link"). +node("lzo") :- depends_on("libarchive", "lzo"), node("libarchive"). + +declared_dependency("libarchive", "nettle", "build"). +declared_dependency("libarchive", "nettle", "link"). +node("nettle") :- depends_on("libarchive", "nettle"), node("libarchive"). + +declared_dependency("libarchive", "openssl", "build"). +declared_dependency("libarchive", "openssl", "link"). +node("openssl") :- depends_on("libarchive", "openssl"), node("libarchive"). + +declared_dependency("libarchive", "xz", "build"). +declared_dependency("libarchive", "xz", "link"). +node("xz") :- depends_on("libarchive", "xz"), node("libarchive"). + +declared_dependency("libarchive", "zlib", "build"). +declared_dependency("libarchive", "zlib", "link"). +node("zlib") :- depends_on("libarchive", "zlib"), node("libarchive"). + + +%---------------------------------------------------------------------------- +% Package: libatomic-ops +%---------------------------------------------------------------------------- +version_declared("libatomic-ops", "7.6.6", 0). +version_declared("libatomic-ops", "7.4.4", 1). + + +%---------------------------------------------------------------------------- +% Package: libbsd +%---------------------------------------------------------------------------- +version_declared("libbsd", "0.10.0", 0). +version_declared("libbsd", "0.9.1", 1). +version_declared("libbsd", "0.9.0", 2). +version_declared("libbsd", "0.8.7", 3). +version_declared("libbsd", "0.8.6", 4). + + +%---------------------------------------------------------------------------- +% Package: libcroco +%---------------------------------------------------------------------------- +version_declared("libcroco", "0.6.12", 0). + +declared_dependency("libcroco", "glib", "build"). +declared_dependency("libcroco", "glib", "link"). +node("glib") :- depends_on("libcroco", "glib"), node("libcroco"). + +declared_dependency("libcroco", "libxml2", "build"). +declared_dependency("libcroco", "libxml2", "link"). +node("libxml2") :- depends_on("libcroco", "libxml2"), node("libcroco"). + + +%---------------------------------------------------------------------------- +% Package: libedit +%---------------------------------------------------------------------------- +version_declared("libedit", "3.1-20191231", 0). +version_declared("libedit", "3.1-20170329", 1). +version_declared("libedit", "3.1-20160903", 2). +version_declared("libedit", "3.1-20150325", 3). + +declared_dependency("libedit", "ncurses", "build"). +declared_dependency("libedit", "ncurses", "link"). +node("ncurses") :- depends_on("libedit", "ncurses"), node("libedit"). + + +%---------------------------------------------------------------------------- +% Package: libepoxy +%---------------------------------------------------------------------------- +version_declared("libepoxy", "1.4.3", 0). + +variant("libepoxy", "glx"). +variant_single_value("libepoxy", "glx"). +variant_default_value("libepoxy", "glx", "True"). +variant_possible_value("libepoxy", "glx", "False"). +variant_possible_value("libepoxy", "glx", "True"). + +declared_dependency("libepoxy", "gl", "build"). +declared_dependency("libepoxy", "gl", "link"). +node("gl") :- depends_on("libepoxy", "gl"), node("libepoxy"). + +declared_dependency("libepoxy", "libx11", "build") :- node("libepoxy"), variant_value("libepoxy", "glx", "True"). +declared_dependency("libepoxy", "libx11", "link") :- node("libepoxy"), variant_value("libepoxy", "glx", "True"). +node("libx11") :- depends_on("libepoxy", "libx11"), node("libepoxy"), variant_value("libepoxy", "glx", "True"). + +declared_dependency("libepoxy", "meson", "build"). +declared_dependency("libepoxy", "meson", "link"). +node("meson") :- depends_on("libepoxy", "meson"), node("libepoxy"). + +declared_dependency("libepoxy", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libepoxy", "pkgconfig"), node("libepoxy"). + + +%---------------------------------------------------------------------------- +% Package: libevent +%---------------------------------------------------------------------------- +version_declared("libevent", "2.1.8", 0). +version_declared("libevent", "2.0.22", 1). +version_declared("libevent", "2.0.21", 2). +version_declared("libevent", "2.0.20", 3). +version_declared("libevent", "2.0.19", 4). +version_declared("libevent", "2.0.18", 5). +version_declared("libevent", "2.0.17", 6). +version_declared("libevent", "2.0.16", 7). +version_declared("libevent", "2.0.15", 8). +version_declared("libevent", "2.0.14", 9). +version_declared("libevent", "2.0.13", 10). +version_declared("libevent", "2.0.12", 11). + +variant("libevent", "openssl"). +variant_single_value("libevent", "openssl"). +variant_default_value("libevent", "openssl", "True"). +variant_possible_value("libevent", "openssl", "False"). +variant_possible_value("libevent", "openssl", "True"). + +declared_dependency("libevent", "openssl", "build") :- node("libevent"), 1 { version("libevent", "2.0.12"); version("libevent", "2.0.13"); version("libevent", "2.0.14"); version("libevent", "2.0.15"); version("libevent", "2.0.16"); version("libevent", "2.0.17"); version("libevent", "2.0.18"); version("libevent", "2.0.19"); version("libevent", "2.0.20"); version("libevent", "2.0.21"); version("libevent", "2.0.22") } 1, variant_value("libevent", "openssl", "True"). +declared_dependency("libevent", "openssl", "link") :- node("libevent"), 1 { version("libevent", "2.0.12"); version("libevent", "2.0.13"); version("libevent", "2.0.14"); version("libevent", "2.0.15"); version("libevent", "2.0.16"); version("libevent", "2.0.17"); version("libevent", "2.0.18"); version("libevent", "2.0.19"); version("libevent", "2.0.20"); version("libevent", "2.0.21"); version("libevent", "2.0.22") } 1, variant_value("libevent", "openssl", "True"). +node("openssl") :- depends_on("libevent", "openssl"), node("libevent"), 1 { version("libevent", "2.0.12"); version("libevent", "2.0.13"); version("libevent", "2.0.14"); version("libevent", "2.0.15"); version("libevent", "2.0.16"); version("libevent", "2.0.17"); version("libevent", "2.0.18"); version("libevent", "2.0.19"); version("libevent", "2.0.20"); version("libevent", "2.0.21"); version("libevent", "2.0.22") } 1, variant_value("libevent", "openssl", "True"). +1 { version("openssl", "1.0.1e"); version("openssl", "1.0.1h"); version("openssl", "1.0.1r"); version("openssl", "1.0.1t"); version("openssl", "1.0.1u"); version("openssl", "1.0.2d"); version("openssl", "1.0.2e"); version("openssl", "1.0.2f"); version("openssl", "1.0.2g"); version("openssl", "1.0.2h"); version("openssl", "1.0.2i"); version("openssl", "1.0.2j"); version("openssl", "1.0.2k"); version("openssl", "1.0.2m"); version("openssl", "1.0.2n"); version("openssl", "1.0.2o"); version("openssl", "1.0.2p"); version("openssl", "1.0.2r"); version("openssl", "1.0.2s"); version("openssl", "1.0.2t") } 1 :- depends_on("libevent", "openssl"), node("libevent"), 1 { version("libevent", "2.0.12"); version("libevent", "2.0.13"); version("libevent", "2.0.14"); version("libevent", "2.0.15"); version("libevent", "2.0.16"); version("libevent", "2.0.17"); version("libevent", "2.0.18"); version("libevent", "2.0.19"); version("libevent", "2.0.20"); version("libevent", "2.0.21"); version("libevent", "2.0.22") } 1, variant_value("libevent", "openssl", "True"). +declared_dependency("libevent", "openssl", "build") :- node("libevent"), variant_value("libevent", "openssl", "True"). +declared_dependency("libevent", "openssl", "link") :- node("libevent"), variant_value("libevent", "openssl", "True"). +node("openssl") :- depends_on("libevent", "openssl"), node("libevent"), variant_value("libevent", "openssl", "True"). + + +%---------------------------------------------------------------------------- +% Package: libfabric +%---------------------------------------------------------------------------- +version_declared("libfabric", "1.9.0", 0). +version_declared("libfabric", "1.8.1", 1). +version_declared("libfabric", "1.8.0", 2). +version_declared("libfabric", "1.7.1", 3). +version_declared("libfabric", "1.7.0", 4). +version_declared("libfabric", "1.6.2", 5). +version_declared("libfabric", "1.6.1", 6). +version_declared("libfabric", "1.6.0", 7). +version_declared("libfabric", "1.5.3", 8). +version_declared("libfabric", "1.5.0", 9). +version_declared("libfabric", "1.4.2", 10). +version_declared("libfabric", "develop", 11). + +variant("libfabric", "fabrics"). +not variant_single_value("libfabric", "fabrics"). +variant_default_value("libfabric", "fabrics", "sockets"). +variant_possible_value("libfabric", "fabrics", "efa"). +variant_possible_value("libfabric", "fabrics", "gni"). +variant_possible_value("libfabric", "fabrics", "mlx"). +variant_possible_value("libfabric", "fabrics", "mrail"). +variant_possible_value("libfabric", "fabrics", "psm"). +variant_possible_value("libfabric", "fabrics", "psm2"). +variant_possible_value("libfabric", "fabrics", "rxd"). +variant_possible_value("libfabric", "fabrics", "rxm"). +variant_possible_value("libfabric", "fabrics", "shm"). +variant_possible_value("libfabric", "fabrics", "sockets"). +variant_possible_value("libfabric", "fabrics", "tcp"). +variant_possible_value("libfabric", "fabrics", "udp"). +variant_possible_value("libfabric", "fabrics", "usnic"). +variant_possible_value("libfabric", "fabrics", "verbs"). +variant_possible_value("libfabric", "fabrics", "xpmem"). + +variant("libfabric", "kdreg"). +variant_single_value("libfabric", "kdreg"). +variant_default_value("libfabric", "kdreg", "False"). +variant_possible_value("libfabric", "kdreg", "False"). +variant_possible_value("libfabric", "kdreg", "True"). + +declared_dependency("libfabric", "autoconf", "build") :- node("libfabric"), 1 { version("libfabric", "develop") } 1. +node("autoconf") :- depends_on("libfabric", "autoconf"), node("libfabric"), 1 { version("libfabric", "develop") } 1. + +declared_dependency("libfabric", "automake", "build") :- node("libfabric"), 1 { version("libfabric", "develop") } 1. +node("automake") :- depends_on("libfabric", "automake"), node("libfabric"), 1 { version("libfabric", "develop") } 1. + +declared_dependency("libfabric", "libtool", "build") :- node("libfabric"), 1 { version("libfabric", "develop") } 1. +node("libtool") :- depends_on("libfabric", "libtool"), node("libfabric"), 1 { version("libfabric", "develop") } 1. + +declared_dependency("libfabric", "m4", "build") :- node("libfabric"), 1 { version("libfabric", "develop") } 1. +node("m4") :- depends_on("libfabric", "m4"), node("libfabric"), 1 { version("libfabric", "develop") } 1. + +declared_dependency("libfabric", "opa-psm2", "build") :- node("libfabric"), variant_value("libfabric", "fabrics", "psm2"). +declared_dependency("libfabric", "opa-psm2", "link") :- node("libfabric"), variant_value("libfabric", "fabrics", "psm2"). +node("opa-psm2") :- depends_on("libfabric", "opa-psm2"), node("libfabric"), variant_value("libfabric", "fabrics", "psm2"). + +declared_dependency("libfabric", "psm", "build") :- node("libfabric"), variant_value("libfabric", "fabrics", "psm"). +declared_dependency("libfabric", "psm", "link") :- node("libfabric"), variant_value("libfabric", "fabrics", "psm"). +node("psm") :- depends_on("libfabric", "psm"), node("libfabric"), variant_value("libfabric", "fabrics", "psm"). + +declared_dependency("libfabric", "rdma-core", "build") :- node("libfabric"), variant_value("libfabric", "fabrics", "verbs"). +declared_dependency("libfabric", "rdma-core", "link") :- node("libfabric"), variant_value("libfabric", "fabrics", "verbs"). +node("rdma-core") :- depends_on("libfabric", "rdma-core"), node("libfabric"), variant_value("libfabric", "fabrics", "verbs"). + +declared_dependency("libfabric", "ucx", "build") :- node("libfabric"), variant_value("libfabric", "fabrics", "mlx"). +declared_dependency("libfabric", "ucx", "link") :- node("libfabric"), variant_value("libfabric", "fabrics", "mlx"). +node("ucx") :- depends_on("libfabric", "ucx"), node("libfabric"), variant_value("libfabric", "fabrics", "mlx"). + + +%---------------------------------------------------------------------------- +% Package: libffi +%---------------------------------------------------------------------------- +version_declared("libffi", "3.2.1", 0). + + +%---------------------------------------------------------------------------- +% Package: libflame +%---------------------------------------------------------------------------- +version_declared("libflame", "5.2.0", 0). +version_declared("libflame", "5.1.0", 1). +version_declared("libflame", "master", 2). + +variant("libflame", "debug"). +variant_single_value("libflame", "debug"). +variant_default_value("libflame", "debug", "False"). +variant_possible_value("libflame", "debug", "False"). +variant_possible_value("libflame", "debug", "True"). + +variant("libflame", "lapack2flame"). +variant_single_value("libflame", "lapack2flame"). +variant_default_value("libflame", "lapack2flame", "True"). +variant_possible_value("libflame", "lapack2flame", "False"). +variant_possible_value("libflame", "lapack2flame", "True"). + +variant("libflame", "shared"). +variant_single_value("libflame", "shared"). +variant_default_value("libflame", "shared", "True"). +variant_possible_value("libflame", "shared", "False"). +variant_possible_value("libflame", "shared", "True"). + +variant("libflame", "static"). +variant_single_value("libflame", "static"). +variant_default_value("libflame", "static", "True"). +variant_possible_value("libflame", "static", "False"). +variant_possible_value("libflame", "static", "True"). + +variant("libflame", "threads"). +variant_single_value("libflame", "threads"). +variant_default_value("libflame", "threads", "no"). +variant_possible_value("libflame", "threads", "no"). +variant_possible_value("libflame", "threads", "openmp"). +variant_possible_value("libflame", "threads", "pthreads"). + +declared_dependency("libflame", "blas", "build"). +declared_dependency("libflame", "blas", "link"). +node("blas") :- depends_on("libflame", "blas"), node("libflame"). + + +%---------------------------------------------------------------------------- +% Package: libfontenc +%---------------------------------------------------------------------------- +version_declared("libfontenc", "1.1.3", 0). + +declared_dependency("libfontenc", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libfontenc", "pkgconfig"), node("libfontenc"). + +declared_dependency("libfontenc", "util-macros", "build"). +node("util-macros") :- depends_on("libfontenc", "util-macros"), node("libfontenc"). + +declared_dependency("libfontenc", "xproto", "build"). +node("xproto") :- depends_on("libfontenc", "xproto"), node("libfontenc"). + +declared_dependency("libfontenc", "zlib", "build"). +declared_dependency("libfontenc", "zlib", "link"). +node("zlib") :- depends_on("libfontenc", "zlib"), node("libfontenc"). + + +%---------------------------------------------------------------------------- +% Package: libgcrypt +%---------------------------------------------------------------------------- +version_declared("libgcrypt", "1.8.5", 0). +version_declared("libgcrypt", "1.8.4", 1). +version_declared("libgcrypt", "1.8.1", 2). +version_declared("libgcrypt", "1.7.6", 3). +version_declared("libgcrypt", "1.6.2", 4). + +declared_dependency("libgcrypt", "libgpg-error", "build"). +declared_dependency("libgcrypt", "libgpg-error", "link"). +node("libgpg-error") :- depends_on("libgcrypt", "libgpg-error"), node("libgcrypt"). +1 { version("libgpg-error", "1.27"); version("libgpg-error", "1.36") } 1 :- depends_on("libgcrypt", "libgpg-error"), node("libgcrypt"). + + +%---------------------------------------------------------------------------- +% Package: libgpg-error +%---------------------------------------------------------------------------- +version_declared("libgpg-error", "1.36", 0). +version_declared("libgpg-error", "1.27", 1). +version_declared("libgpg-error", "1.21", 2). +version_declared("libgpg-error", "1.18", 3). + +declared_dependency("libgpg-error", "awk", "build"). +node("awk") :- depends_on("libgpg-error", "awk"), node("libgpg-error"). + + +%---------------------------------------------------------------------------- +% Package: libice +%---------------------------------------------------------------------------- +version_declared("libice", "1.0.9", 0). + +declared_dependency("libice", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libice", "pkgconfig"), node("libice"). + +declared_dependency("libice", "util-macros", "build"). +node("util-macros") :- depends_on("libice", "util-macros"), node("libice"). + +declared_dependency("libice", "xproto", "build"). +node("xproto") :- depends_on("libice", "xproto"), node("libice"). + +declared_dependency("libice", "xtrans", "build"). +node("xtrans") :- depends_on("libice", "xtrans"), node("libice"). + + +%---------------------------------------------------------------------------- +% Package: libiconv +%---------------------------------------------------------------------------- +version_declared("libiconv", "1.16", 0). +version_declared("libiconv", "1.15", 1). +version_declared("libiconv", "1.14", 2). + + +%---------------------------------------------------------------------------- +% Package: libidn2 +%---------------------------------------------------------------------------- +version_declared("libidn2", "2.1.1a", 0). +version_declared("libidn2", "2.1.1", 1). +version_declared("libidn2", "2.1.0", 2). +version_declared("libidn2", "2.0.5", 3). + +declared_dependency("libidn2", "libunistring", "build"). +declared_dependency("libidn2", "libunistring", "link"). +node("libunistring") :- depends_on("libidn2", "libunistring"), node("libidn2"). + + +%---------------------------------------------------------------------------- +% Package: libjpeg +%---------------------------------------------------------------------------- +version_declared("libjpeg", "9c", 0). +version_declared("libjpeg", "9b", 1). +version_declared("libjpeg", "9a", 2). + + +%---------------------------------------------------------------------------- +% Package: libjpeg-turbo +%---------------------------------------------------------------------------- +version_declared("libjpeg-turbo", "2.0.3", 0). +version_declared("libjpeg-turbo", "2.0.2", 1). +version_declared("libjpeg-turbo", "1.5.90", 2). +version_declared("libjpeg-turbo", "1.5.3", 3). +version_declared("libjpeg-turbo", "1.5.0", 4). +version_declared("libjpeg-turbo", "1.3.1", 5). + +declared_dependency("libjpeg-turbo", "autoconf", "build") :- node("libjpeg-turbo"), 1 { version("libjpeg-turbo", "1.3.1"); version("libjpeg-turbo", "1.5.0"); version("libjpeg-turbo", "1.5.3") } 1. +node("autoconf") :- depends_on("libjpeg-turbo", "autoconf"), node("libjpeg-turbo"), 1 { version("libjpeg-turbo", "1.3.1"); version("libjpeg-turbo", "1.5.0"); version("libjpeg-turbo", "1.5.3") } 1. + +declared_dependency("libjpeg-turbo", "automake", "build") :- node("libjpeg-turbo"), 1 { version("libjpeg-turbo", "1.3.1"); version("libjpeg-turbo", "1.5.0"); version("libjpeg-turbo", "1.5.3") } 1. +node("automake") :- depends_on("libjpeg-turbo", "automake"), node("libjpeg-turbo"), 1 { version("libjpeg-turbo", "1.3.1"); version("libjpeg-turbo", "1.5.0"); version("libjpeg-turbo", "1.5.3") } 1. + +declared_dependency("libjpeg-turbo", "cmake", "build") :- node("libjpeg-turbo"), 1 { version("libjpeg-turbo", "1.5.90"); version("libjpeg-turbo", "2.0.2"); version("libjpeg-turbo", "2.0.3") } 1. +node("cmake") :- depends_on("libjpeg-turbo", "cmake"), node("libjpeg-turbo"), 1 { version("libjpeg-turbo", "1.5.90"); version("libjpeg-turbo", "2.0.2"); version("libjpeg-turbo", "2.0.3") } 1. + +declared_dependency("libjpeg-turbo", "libtool", "build") :- node("libjpeg-turbo"), 1 { version("libjpeg-turbo", "1.3.1"); version("libjpeg-turbo", "1.5.0"); version("libjpeg-turbo", "1.5.3") } 1. +node("libtool") :- depends_on("libjpeg-turbo", "libtool"), node("libjpeg-turbo"), 1 { version("libjpeg-turbo", "1.3.1"); version("libjpeg-turbo", "1.5.0"); version("libjpeg-turbo", "1.5.3") } 1. + +declared_dependency("libjpeg-turbo", "nasm", "build"). +node("nasm") :- depends_on("libjpeg-turbo", "nasm"), node("libjpeg-turbo"). + + +%---------------------------------------------------------------------------- +% Package: libmng +%---------------------------------------------------------------------------- +version_declared("libmng", "2.0.3", 0). +version_declared("libmng", "2.0.2", 1). + +variant("libmng", "build_type"). +variant_single_value("libmng", "build_type"). +variant_default_value("libmng", "build_type", "RelWithDebInfo"). +variant_possible_value("libmng", "build_type", "Debug"). +variant_possible_value("libmng", "build_type", "MinSizeRel"). +variant_possible_value("libmng", "build_type", "RelWithDebInfo"). +variant_possible_value("libmng", "build_type", "Release"). + +declared_dependency("libmng", "cmake", "build"). +node("cmake") :- depends_on("libmng", "cmake"), node("libmng"). + +declared_dependency("libmng", "gzip", "build"). +declared_dependency("libmng", "gzip", "link"). +node("gzip") :- depends_on("libmng", "gzip"), node("libmng"). + +declared_dependency("libmng", "jpeg", "build"). +declared_dependency("libmng", "jpeg", "link"). +node("jpeg") :- depends_on("libmng", "jpeg"), node("libmng"). + +declared_dependency("libmng", "lcms", "build"). +declared_dependency("libmng", "lcms", "link"). +node("lcms") :- depends_on("libmng", "lcms"), node("libmng"). + +declared_dependency("libmng", "zlib", "build"). +declared_dependency("libmng", "zlib", "link"). +node("zlib") :- depends_on("libmng", "zlib"), node("libmng"). + + +%---------------------------------------------------------------------------- +% Package: libnl +%---------------------------------------------------------------------------- +version_declared("libnl", "3.3.0", 0). + +declared_dependency("libnl", "bison", "build"). +node("bison") :- depends_on("libnl", "bison"), node("libnl"). + +declared_dependency("libnl", "flex", "build"). +node("flex") :- depends_on("libnl", "flex"), node("libnl"). + +declared_dependency("libnl", "m4", "build"). +node("m4") :- depends_on("libnl", "m4"), node("libnl"). + + +%---------------------------------------------------------------------------- +% Package: libnsl +%---------------------------------------------------------------------------- +version_declared("libnsl", "1.2.0", 0). + +declared_dependency("libnsl", "autoconf", "build"). +node("autoconf") :- depends_on("libnsl", "autoconf"), node("libnsl"). + +declared_dependency("libnsl", "automake", "build"). +node("automake") :- depends_on("libnsl", "automake"), node("libnsl"). + +declared_dependency("libnsl", "gettext", "build"). +declared_dependency("libnsl", "gettext", "link"). +node("gettext") :- depends_on("libnsl", "gettext"), node("libnsl"). + +declared_dependency("libnsl", "libtirpc", "build"). +declared_dependency("libnsl", "libtirpc", "link"). +node("libtirpc") :- depends_on("libnsl", "libtirpc"), node("libnsl"). + +declared_dependency("libnsl", "libtool", "build"). +node("libtool") :- depends_on("libnsl", "libtool"), node("libnsl"). + +declared_dependency("libnsl", "m4", "build"). +node("m4") :- depends_on("libnsl", "m4"), node("libnsl"). + +declared_dependency("libnsl", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libnsl", "pkgconfig"), node("libnsl"). + +declared_dependency("libnsl", "rpcsvc-proto", "build"). +declared_dependency("libnsl", "rpcsvc-proto", "link"). +node("rpcsvc-proto") :- depends_on("libnsl", "rpcsvc-proto"), node("libnsl"). + + +%---------------------------------------------------------------------------- +% Package: libpciaccess +%---------------------------------------------------------------------------- +version_declared("libpciaccess", "0.13.5", 0). +version_declared("libpciaccess", "0.13.4", 1). + +declared_dependency("libpciaccess", "libtool", "build"). +node("libtool") :- depends_on("libpciaccess", "libtool"), node("libpciaccess"). + +declared_dependency("libpciaccess", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libpciaccess", "pkgconfig"), node("libpciaccess"). + +declared_dependency("libpciaccess", "util-macros", "build"). +node("util-macros") :- depends_on("libpciaccess", "util-macros"), node("libpciaccess"). + + +%---------------------------------------------------------------------------- +% Package: libpng +%---------------------------------------------------------------------------- +version_declared("libpng", "1.6.37", 0). +version_declared("libpng", "1.2.57", 1). + +declared_dependency("libpng", "zlib", "build"). +declared_dependency("libpng", "zlib", "link"). +node("zlib") :- depends_on("libpng", "zlib"), node("libpng"). + + +%---------------------------------------------------------------------------- +% Package: libpsl +%---------------------------------------------------------------------------- +version_declared("libpsl", "0.17.0", 0). + +declared_dependency("libpsl", "gettext", "build"). +node("gettext") :- depends_on("libpsl", "gettext"), node("libpsl"). + +declared_dependency("libpsl", "icu4c", "build"). +declared_dependency("libpsl", "icu4c", "link"). +node("icu4c") :- depends_on("libpsl", "icu4c"), node("libpsl"). + +declared_dependency("libpsl", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libpsl", "pkgconfig"), node("libpsl"). + +declared_dependency("libpsl", "python", "build"). +node("python") :- depends_on("libpsl", "python"), node("libpsl"). + +declared_dependency("libpsl", "valgrind", "test"). +node("valgrind") :- depends_on("libpsl", "valgrind"), node("libpsl"). +variant_set("valgrind", "boost", "False") :- depends_on("libpsl", "valgrind"), node("libpsl"). +variant_set("valgrind", "mpi", "False") :- depends_on("libpsl", "valgrind"), node("libpsl"). + + +%---------------------------------------------------------------------------- +% Package: libpthread-stubs +%---------------------------------------------------------------------------- +version_declared("libpthread-stubs", "0.4", 0). +version_declared("libpthread-stubs", "0.3", 1). + + +%---------------------------------------------------------------------------- +% Package: librsvg +%---------------------------------------------------------------------------- +version_declared("librsvg", "2.44.14", 0). + +declared_dependency("librsvg", "cairo", "build"). +declared_dependency("librsvg", "cairo", "link"). +node("cairo") :- depends_on("librsvg", "cairo"), node("librsvg"). + +declared_dependency("librsvg", "gdk-pixbuf", "build"). +declared_dependency("librsvg", "gdk-pixbuf", "link"). +node("gdk-pixbuf") :- depends_on("librsvg", "gdk-pixbuf"), node("librsvg"). + +declared_dependency("librsvg", "glib", "build"). +declared_dependency("librsvg", "glib", "link"). +node("glib") :- depends_on("librsvg", "glib"), node("librsvg"). + +declared_dependency("librsvg", "gobject-introspection", "build"). +node("gobject-introspection") :- depends_on("librsvg", "gobject-introspection"), node("librsvg"). + +declared_dependency("librsvg", "libcroco", "build"). +declared_dependency("librsvg", "libcroco", "link"). +node("libcroco") :- depends_on("librsvg", "libcroco"), node("librsvg"). + +declared_dependency("librsvg", "libffi", "build"). +declared_dependency("librsvg", "libffi", "link"). +node("libffi") :- depends_on("librsvg", "libffi"), node("librsvg"). + +declared_dependency("librsvg", "libxml2", "build"). +declared_dependency("librsvg", "libxml2", "link"). +node("libxml2") :- depends_on("librsvg", "libxml2"), node("librsvg"). + +declared_dependency("librsvg", "pango", "build"). +declared_dependency("librsvg", "pango", "link"). +node("pango") :- depends_on("librsvg", "pango"), node("librsvg"). + +declared_dependency("librsvg", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("librsvg", "pkgconfig"), node("librsvg"). + +declared_dependency("librsvg", "rust", "build"). +node("rust") :- depends_on("librsvg", "rust"), node("librsvg"). + + +%---------------------------------------------------------------------------- +% Package: libsigsegv +%---------------------------------------------------------------------------- +version_declared("libsigsegv", "2.12", 0). +version_declared("libsigsegv", "2.11", 1). +version_declared("libsigsegv", "2.10", 2). + + +%---------------------------------------------------------------------------- +% Package: libsm +%---------------------------------------------------------------------------- +version_declared("libsm", "1.2.2", 0). + +declared_dependency("libsm", "libice", "build"). +declared_dependency("libsm", "libice", "link"). +node("libice") :- depends_on("libsm", "libice"), node("libsm"). + +declared_dependency("libsm", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libsm", "pkgconfig"), node("libsm"). + +declared_dependency("libsm", "util-macros", "build"). +node("util-macros") :- depends_on("libsm", "util-macros"), node("libsm"). + +declared_dependency("libsm", "xproto", "build"). +node("xproto") :- depends_on("libsm", "xproto"), node("libsm"). + +declared_dependency("libsm", "xtrans", "build"). +node("xtrans") :- depends_on("libsm", "xtrans"), node("libsm"). + + +%---------------------------------------------------------------------------- +% Package: libsodium +%---------------------------------------------------------------------------- +version_declared("libsodium", "1.0.17", 0). +version_declared("libsodium", "1.0.16", 1). +version_declared("libsodium", "1.0.15", 2). +version_declared("libsodium", "1.0.13", 3). +version_declared("libsodium", "1.0.3", 4). +version_declared("libsodium", "1.0.2", 5). +version_declared("libsodium", "1.0.1", 6). +version_declared("libsodium", "1.0.0", 7). +version_declared("libsodium", "0.7.1", 8). + + +%---------------------------------------------------------------------------- +% Package: libssh +%---------------------------------------------------------------------------- +version_declared("libssh", "0.8.5", 0). +version_declared("libssh", "0.7.5", 1). + +variant("libssh", "build_type"). +variant_single_value("libssh", "build_type"). +variant_default_value("libssh", "build_type", "RelWithDebInfo"). +variant_possible_value("libssh", "build_type", "Debug"). +variant_possible_value("libssh", "build_type", "MinSizeRel"). +variant_possible_value("libssh", "build_type", "RelWithDebInfo"). +variant_possible_value("libssh", "build_type", "Release"). + +declared_dependency("libssh", "cmake", "build"). +node("cmake") :- depends_on("libssh", "cmake"), node("libssh"). + +declared_dependency("libssh", "openssl", "build") :- node("libssh"), 1 { version("libssh", "0.7.5") } 1. +declared_dependency("libssh", "openssl", "link") :- node("libssh"), 1 { version("libssh", "0.7.5") } 1. +node("openssl") :- depends_on("libssh", "openssl"), node("libssh"), 1 { version("libssh", "0.7.5") } 1. +1 { version("openssl", "1.0.1e"); version("openssl", "1.0.1h"); version("openssl", "1.0.1r"); version("openssl", "1.0.1t"); version("openssl", "1.0.1u"); version("openssl", "1.0.2d"); version("openssl", "1.0.2e"); version("openssl", "1.0.2f"); version("openssl", "1.0.2g"); version("openssl", "1.0.2h"); version("openssl", "1.0.2i"); version("openssl", "1.0.2j"); version("openssl", "1.0.2k"); version("openssl", "1.0.2m"); version("openssl", "1.0.2n"); version("openssl", "1.0.2o"); version("openssl", "1.0.2p"); version("openssl", "1.0.2r"); version("openssl", "1.0.2s"); version("openssl", "1.0.2t") } 1 :- depends_on("libssh", "openssl"), node("libssh"), 1 { version("libssh", "0.7.5") } 1. +declared_dependency("libssh", "openssl", "build"). +declared_dependency("libssh", "openssl", "link"). +node("openssl") :- depends_on("libssh", "openssl"), node("libssh"). + +declared_dependency("libssh", "zlib", "build"). +declared_dependency("libssh", "zlib", "link"). +node("zlib") :- depends_on("libssh", "zlib"), node("libssh"). + + +%---------------------------------------------------------------------------- +% Package: libssh2 +%---------------------------------------------------------------------------- +version_declared("libssh2", "1.8.0", 0). +version_declared("libssh2", "1.7.0", 1). +version_declared("libssh2", "1.4.3", 2). + +variant("libssh2", "build_type"). +variant_single_value("libssh2", "build_type"). +variant_default_value("libssh2", "build_type", "RelWithDebInfo"). +variant_possible_value("libssh2", "build_type", "Debug"). +variant_possible_value("libssh2", "build_type", "MinSizeRel"). +variant_possible_value("libssh2", "build_type", "RelWithDebInfo"). +variant_possible_value("libssh2", "build_type", "Release"). + +variant("libssh2", "shared"). +variant_single_value("libssh2", "shared"). +variant_default_value("libssh2", "shared", "True"). +variant_possible_value("libssh2", "shared", "False"). +variant_possible_value("libssh2", "shared", "True"). + +declared_dependency("libssh2", "cmake", "build"). +node("cmake") :- depends_on("libssh2", "cmake"), node("libssh2"). +1 { version("cmake", "3.0.2"); version("cmake", "3.1.0"); version("cmake", "3.3.1"); version("cmake", "3.4.0"); version("cmake", "3.4.3"); version("cmake", "3.5.0"); version("cmake", "3.5.1"); version("cmake", "3.5.2"); version("cmake", "3.6.0"); version("cmake", "3.6.1"); version("cmake", "3.7.1"); version("cmake", "3.7.2"); version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3"); version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4"); version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1 :- depends_on("libssh2", "cmake"), node("libssh2"). + +declared_dependency("libssh2", "openssl", "build"). +declared_dependency("libssh2", "openssl", "link"). +node("openssl") :- depends_on("libssh2", "openssl"), node("libssh2"). + +declared_dependency("libssh2", "xz", "build"). +declared_dependency("libssh2", "xz", "link"). +node("xz") :- depends_on("libssh2", "xz"), node("libssh2"). + +declared_dependency("libssh2", "zlib", "build"). +declared_dependency("libssh2", "zlib", "link"). +node("zlib") :- depends_on("libssh2", "zlib"), node("libssh2"). + + +%---------------------------------------------------------------------------- +% Package: libszip +%---------------------------------------------------------------------------- +version_declared("libszip", "2.1.1", 0). +version_declared("libszip", "2.1", 1). + + +%---------------------------------------------------------------------------- +% Package: libtiff +%---------------------------------------------------------------------------- +version_declared("libtiff", "4.0.10", 0). +version_declared("libtiff", "4.0.9", 1). +version_declared("libtiff", "4.0.8", 2). +version_declared("libtiff", "4.0.7", 3). +version_declared("libtiff", "4.0.6", 4). +version_declared("libtiff", "3.9.7", 5). + +declared_dependency("libtiff", "jpeg", "build"). +declared_dependency("libtiff", "jpeg", "link"). +node("jpeg") :- depends_on("libtiff", "jpeg"), node("libtiff"). + +declared_dependency("libtiff", "xz", "build"). +declared_dependency("libtiff", "xz", "link"). +node("xz") :- depends_on("libtiff", "xz"), node("libtiff"). + +declared_dependency("libtiff", "zlib", "build"). +declared_dependency("libtiff", "zlib", "link"). +node("zlib") :- depends_on("libtiff", "zlib"), node("libtiff"). + + +%---------------------------------------------------------------------------- +% Package: libtirpc +%---------------------------------------------------------------------------- +version_declared("libtirpc", "1.1.4", 0). + + +%---------------------------------------------------------------------------- +% Package: libtool +%---------------------------------------------------------------------------- +version_declared("libtool", "2.4.6", 0). +version_declared("libtool", "2.4.2", 1). +version_declared("libtool", "develop", 2). + +declared_dependency("libtool", "autoconf", "build") :- node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. +node("autoconf") :- depends_on("libtool", "autoconf"), node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. + +declared_dependency("libtool", "automake", "build") :- node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. +node("automake") :- depends_on("libtool", "automake"), node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. + +declared_dependency("libtool", "help2man", "build") :- node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. +node("help2man") :- depends_on("libtool", "help2man"), node("libtool"), 1 { version("libtool", "2.4.2"); version("libtool", "develop") } 1. + +declared_dependency("libtool", "m4", "build"). +node("m4") :- depends_on("libtool", "m4"), node("libtool"). + +declared_dependency("libtool", "texinfo", "build") :- node("libtool"), 1 { version("libtool", "develop") } 1. +node("texinfo") :- depends_on("libtool", "texinfo"), node("libtool"), 1 { version("libtool", "develop") } 1. + +declared_dependency("libtool", "xz", "build") :- node("libtool"), 1 { version("libtool", "develop") } 1. +node("xz") :- depends_on("libtool", "xz"), node("libtool"), 1 { version("libtool", "develop") } 1. + + +%---------------------------------------------------------------------------- +% Package: libunistring +%---------------------------------------------------------------------------- +version_declared("libunistring", "0.9.10", 0). +version_declared("libunistring", "0.9.9", 1). +version_declared("libunistring", "0.9.8", 2). +version_declared("libunistring", "0.9.7", 3). +version_declared("libunistring", "0.9.6", 4). + +declared_dependency("libunistring", "libiconv", "build"). +declared_dependency("libunistring", "libiconv", "link"). +node("libiconv") :- depends_on("libunistring", "libiconv"), node("libunistring"). + + +%---------------------------------------------------------------------------- +% Package: libuuid +%---------------------------------------------------------------------------- +version_declared("libuuid", "1.0.3", 0). + + +%---------------------------------------------------------------------------- +% Package: libuv +%---------------------------------------------------------------------------- +version_declared("libuv", "1.25.0", 0). +version_declared("libuv", "1.10.0", 1). +version_declared("libuv", "1.9.0", 2). + +declared_dependency("libuv", "autoconf", "build"). +node("autoconf") :- depends_on("libuv", "autoconf"), node("libuv"). + +declared_dependency("libuv", "automake", "build"). +node("automake") :- depends_on("libuv", "automake"), node("libuv"). + +declared_dependency("libuv", "libtool", "build"). +node("libtool") :- depends_on("libuv", "libtool"), node("libuv"). + + +%---------------------------------------------------------------------------- +% Package: libx11 +%---------------------------------------------------------------------------- +version_declared("libx11", "1.6.7", 0). +version_declared("libx11", "1.6.5", 1). +version_declared("libx11", "1.6.3", 2). + +declared_dependency("libx11", "inputproto", "build"). +node("inputproto") :- depends_on("libx11", "inputproto"), node("libx11"). + +declared_dependency("libx11", "kbproto", "build"). +declared_dependency("libx11", "kbproto", "link"). +node("kbproto") :- depends_on("libx11", "kbproto"), node("libx11"). + +declared_dependency("libx11", "libxcb", "build"). +declared_dependency("libx11", "libxcb", "link"). +node("libxcb") :- depends_on("libx11", "libxcb"), node("libx11"). + +declared_dependency("libx11", "perl", "build"). +node("perl") :- depends_on("libx11", "perl"), node("libx11"). + +declared_dependency("libx11", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libx11", "pkgconfig"), node("libx11"). + +declared_dependency("libx11", "util-macros", "build"). +node("util-macros") :- depends_on("libx11", "util-macros"), node("libx11"). + +declared_dependency("libx11", "xextproto", "build"). +declared_dependency("libx11", "xextproto", "link"). +node("xextproto") :- depends_on("libx11", "xextproto"), node("libx11"). + +declared_dependency("libx11", "xproto", "build"). +node("xproto") :- depends_on("libx11", "xproto"), node("libx11"). + +declared_dependency("libx11", "xtrans", "build"). +node("xtrans") :- depends_on("libx11", "xtrans"), node("libx11"). + + +%---------------------------------------------------------------------------- +% Package: libxau +%---------------------------------------------------------------------------- +version_declared("libxau", "1.0.8", 0). + +declared_dependency("libxau", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxau", "pkgconfig"), node("libxau"). + +declared_dependency("libxau", "util-macros", "build"). +node("util-macros") :- depends_on("libxau", "util-macros"), node("libxau"). + +declared_dependency("libxau", "xproto", "build"). +declared_dependency("libxau", "xproto", "link"). +node("xproto") :- depends_on("libxau", "xproto"), node("libxau"). + + +%---------------------------------------------------------------------------- +% Package: libxcb +%---------------------------------------------------------------------------- +version_declared("libxcb", "1.13", 0). +version_declared("libxcb", "1.12", 1). +version_declared("libxcb", "1.11.1", 2). +version_declared("libxcb", "1.11", 3). + +declared_dependency("libxcb", "libpthread-stubs", "build"). +declared_dependency("libxcb", "libpthread-stubs", "link"). +node("libpthread-stubs") :- depends_on("libxcb", "libpthread-stubs"), node("libxcb"). + +declared_dependency("libxcb", "libxau", "build"). +declared_dependency("libxcb", "libxau", "link"). +node("libxau") :- depends_on("libxcb", "libxau"), node("libxcb"). + +declared_dependency("libxcb", "libxdmcp", "build"). +declared_dependency("libxcb", "libxdmcp", "link"). +node("libxdmcp") :- depends_on("libxcb", "libxdmcp"), node("libxcb"). + +declared_dependency("libxcb", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxcb", "pkgconfig"), node("libxcb"). + +declared_dependency("libxcb", "util-macros", "build"). +node("util-macros") :- depends_on("libxcb", "util-macros"), node("libxcb"). + +declared_dependency("libxcb", "xcb-proto", "build"). +node("xcb-proto") :- depends_on("libxcb", "xcb-proto"), node("libxcb"). +declared_dependency("libxcb", "xcb-proto", "build") :- node("libxcb"), 1 { version("libxcb", "1.11"); version("libxcb", "1.11.1") } 1. +node("xcb-proto") :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.11"); version("libxcb", "1.11.1") } 1. +declared_dependency("libxcb", "xcb-proto", "build") :- node("libxcb"), 1 { version("libxcb", "1.12") } 1. +node("xcb-proto") :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.12") } 1. +1 { version("xcb-proto", "1.12"); version("xcb-proto", "1.13") } 1 :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.12") } 1. +declared_dependency("libxcb", "xcb-proto", "build") :- node("libxcb"), 1 { version("libxcb", "1.13") } 1. +node("xcb-proto") :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.13") } 1. +1 { version("xcb-proto", "1.13") } 1 :- depends_on("libxcb", "xcb-proto"), node("libxcb"), 1 { version("libxcb", "1.13") } 1. + + +%---------------------------------------------------------------------------- +% Package: libxcomposite +%---------------------------------------------------------------------------- +version_declared("libxcomposite", "0.4.4", 0). + +declared_dependency("libxcomposite", "compositeproto", "build"). +node("compositeproto") :- depends_on("libxcomposite", "compositeproto"), node("libxcomposite"). + +declared_dependency("libxcomposite", "fixesproto", "build"). +node("fixesproto") :- depends_on("libxcomposite", "fixesproto"), node("libxcomposite"). + +declared_dependency("libxcomposite", "libx11", "build"). +declared_dependency("libxcomposite", "libx11", "link"). +node("libx11") :- depends_on("libxcomposite", "libx11"), node("libxcomposite"). + +declared_dependency("libxcomposite", "libxfixes", "build"). +declared_dependency("libxcomposite", "libxfixes", "link"). +node("libxfixes") :- depends_on("libxcomposite", "libxfixes"), node("libxcomposite"). + +declared_dependency("libxcomposite", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxcomposite", "pkgconfig"), node("libxcomposite"). + +declared_dependency("libxcomposite", "util-macros", "build"). +node("util-macros") :- depends_on("libxcomposite", "util-macros"), node("libxcomposite"). + + +%---------------------------------------------------------------------------- +% Package: libxdmcp +%---------------------------------------------------------------------------- +version_declared("libxdmcp", "1.1.2", 0). + +declared_dependency("libxdmcp", "libbsd", "build") :- node("libxdmcp"), node_platform("libxdmcp", "cray"). +declared_dependency("libxdmcp", "libbsd", "link") :- node("libxdmcp"), node_platform("libxdmcp", "cray"). +node("libbsd") :- depends_on("libxdmcp", "libbsd"), node("libxdmcp"), node_platform("libxdmcp", "cray"). +declared_dependency("libxdmcp", "libbsd", "build") :- node("libxdmcp"), node_platform("libxdmcp", "linux"). +declared_dependency("libxdmcp", "libbsd", "link") :- node("libxdmcp"), node_platform("libxdmcp", "linux"). +node("libbsd") :- depends_on("libxdmcp", "libbsd"), node("libxdmcp"), node_platform("libxdmcp", "linux"). + +declared_dependency("libxdmcp", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxdmcp", "pkgconfig"), node("libxdmcp"). + +declared_dependency("libxdmcp", "util-macros", "build"). +node("util-macros") :- depends_on("libxdmcp", "util-macros"), node("libxdmcp"). + +declared_dependency("libxdmcp", "xproto", "build"). +node("xproto") :- depends_on("libxdmcp", "xproto"), node("libxdmcp"). + + +%---------------------------------------------------------------------------- +% Package: libxext +%---------------------------------------------------------------------------- +version_declared("libxext", "1.3.3", 0). + +declared_dependency("libxext", "libx11", "build"). +declared_dependency("libxext", "libx11", "link"). +node("libx11") :- depends_on("libxext", "libx11"), node("libxext"). + +declared_dependency("libxext", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxext", "pkgconfig"), node("libxext"). + +declared_dependency("libxext", "util-macros", "build"). +node("util-macros") :- depends_on("libxext", "util-macros"), node("libxext"). + +declared_dependency("libxext", "xextproto", "build"). +node("xextproto") :- depends_on("libxext", "xextproto"), node("libxext"). + +declared_dependency("libxext", "xproto", "build"). +node("xproto") :- depends_on("libxext", "xproto"), node("libxext"). + + +%---------------------------------------------------------------------------- +% Package: libxfixes +%---------------------------------------------------------------------------- +version_declared("libxfixes", "5.0.2", 0). + +declared_dependency("libxfixes", "fixesproto", "build"). +node("fixesproto") :- depends_on("libxfixes", "fixesproto"), node("libxfixes"). + +declared_dependency("libxfixes", "libx11", "build"). +declared_dependency("libxfixes", "libx11", "link"). +node("libx11") :- depends_on("libxfixes", "libx11"), node("libxfixes"). + +declared_dependency("libxfixes", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxfixes", "pkgconfig"), node("libxfixes"). + +declared_dependency("libxfixes", "util-macros", "build"). +node("util-macros") :- depends_on("libxfixes", "util-macros"), node("libxfixes"). + +declared_dependency("libxfixes", "xextproto", "build"). +node("xextproto") :- depends_on("libxfixes", "xextproto"), node("libxfixes"). + +declared_dependency("libxfixes", "xproto", "build"). +node("xproto") :- depends_on("libxfixes", "xproto"), node("libxfixes"). + + +%---------------------------------------------------------------------------- +% Package: libxfont +%---------------------------------------------------------------------------- +version_declared("libxfont", "1.5.2", 0). + +declared_dependency("libxfont", "fontsproto", "build"). +node("fontsproto") :- depends_on("libxfont", "fontsproto"), node("libxfont"). + +declared_dependency("libxfont", "freetype", "build"). +declared_dependency("libxfont", "freetype", "link"). +node("freetype") :- depends_on("libxfont", "freetype"), node("libxfont"). + +declared_dependency("libxfont", "libfontenc", "build"). +declared_dependency("libxfont", "libfontenc", "link"). +node("libfontenc") :- depends_on("libxfont", "libfontenc"), node("libxfont"). + +declared_dependency("libxfont", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxfont", "pkgconfig"), node("libxfont"). + +declared_dependency("libxfont", "util-macros", "build"). +node("util-macros") :- depends_on("libxfont", "util-macros"), node("libxfont"). + +declared_dependency("libxfont", "xproto", "build"). +node("xproto") :- depends_on("libxfont", "xproto"), node("libxfont"). + +declared_dependency("libxfont", "xtrans", "build"). +node("xtrans") :- depends_on("libxfont", "xtrans"), node("libxfont"). + + +%---------------------------------------------------------------------------- +% Package: libxft +%---------------------------------------------------------------------------- +version_declared("libxft", "2.3.2", 0). + +declared_dependency("libxft", "fontconfig", "build"). +declared_dependency("libxft", "fontconfig", "link"). +node("fontconfig") :- depends_on("libxft", "fontconfig"), node("libxft"). + +declared_dependency("libxft", "freetype", "build"). +declared_dependency("libxft", "freetype", "link"). +node("freetype") :- depends_on("libxft", "freetype"), node("libxft"). + +declared_dependency("libxft", "libx11", "build"). +declared_dependency("libxft", "libx11", "link"). +node("libx11") :- depends_on("libxft", "libx11"), node("libxft"). + +declared_dependency("libxft", "libxrender", "build"). +declared_dependency("libxft", "libxrender", "link"). +node("libxrender") :- depends_on("libxft", "libxrender"), node("libxft"). + +declared_dependency("libxft", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxft", "pkgconfig"), node("libxft"). + +declared_dependency("libxft", "util-macros", "build"). +node("util-macros") :- depends_on("libxft", "util-macros"), node("libxft"). + + +%---------------------------------------------------------------------------- +% Package: libxi +%---------------------------------------------------------------------------- +version_declared("libxi", "1.7.6", 0). + +declared_dependency("libxi", "fixesproto", "build"). +node("fixesproto") :- depends_on("libxi", "fixesproto"), node("libxi"). + +declared_dependency("libxi", "inputproto", "build"). +node("inputproto") :- depends_on("libxi", "inputproto"), node("libxi"). + +declared_dependency("libxi", "libx11", "build"). +declared_dependency("libxi", "libx11", "link"). +node("libx11") :- depends_on("libxi", "libx11"), node("libxi"). + +declared_dependency("libxi", "libxext", "build"). +declared_dependency("libxi", "libxext", "link"). +node("libxext") :- depends_on("libxi", "libxext"), node("libxi"). + +declared_dependency("libxi", "libxfixes", "build"). +declared_dependency("libxi", "libxfixes", "link"). +node("libxfixes") :- depends_on("libxi", "libxfixes"), node("libxi"). + +declared_dependency("libxi", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxi", "pkgconfig"), node("libxi"). + +declared_dependency("libxi", "xextproto", "build"). +node("xextproto") :- depends_on("libxi", "xextproto"), node("libxi"). + +declared_dependency("libxi", "xproto", "build"). +node("xproto") :- depends_on("libxi", "xproto"), node("libxi"). + + +%---------------------------------------------------------------------------- +% Package: libxinerama +%---------------------------------------------------------------------------- +version_declared("libxinerama", "1.1.3", 0). + +declared_dependency("libxinerama", "libx11", "build"). +declared_dependency("libxinerama", "libx11", "link"). +node("libx11") :- depends_on("libxinerama", "libx11"), node("libxinerama"). + +declared_dependency("libxinerama", "libxext", "build"). +declared_dependency("libxinerama", "libxext", "link"). +node("libxext") :- depends_on("libxinerama", "libxext"), node("libxinerama"). + +declared_dependency("libxinerama", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxinerama", "pkgconfig"), node("libxinerama"). + +declared_dependency("libxinerama", "util-macros", "build"). +node("util-macros") :- depends_on("libxinerama", "util-macros"), node("libxinerama"). + +declared_dependency("libxinerama", "xextproto", "build"). +node("xextproto") :- depends_on("libxinerama", "xextproto"), node("libxinerama"). + +declared_dependency("libxinerama", "xineramaproto", "build"). +node("xineramaproto") :- depends_on("libxinerama", "xineramaproto"), node("libxinerama"). + + +%---------------------------------------------------------------------------- +% Package: libxml2 +%---------------------------------------------------------------------------- +version_declared("libxml2", "2.9.9", 0). +version_declared("libxml2", "2.9.8", 1). +version_declared("libxml2", "2.9.4", 2). +version_declared("libxml2", "2.9.2", 3). +version_declared("libxml2", "2.7.8", 4). + +variant("libxml2", "python"). +variant_single_value("libxml2", "python"). +variant_default_value("libxml2", "python", "False"). +variant_possible_value("libxml2", "python", "False"). +variant_possible_value("libxml2", "python", "True"). + +declared_dependency("libxml2", "libiconv", "build"). +declared_dependency("libxml2", "libiconv", "link"). +node("libiconv") :- depends_on("libxml2", "libiconv"), node("libxml2"). + +declared_dependency("libxml2", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxml2", "pkgconfig"), node("libxml2"). + +declared_dependency("libxml2", "python", "build") :- node("libxml2"), variant_value("libxml2", "python", "True"). +declared_dependency("libxml2", "python", "link") :- node("libxml2"), variant_value("libxml2", "python", "True"). +node("python") :- depends_on("libxml2", "python"), node("libxml2"), variant_value("libxml2", "python", "True"). +variant_set("python", "libxml2", "False") :- depends_on("libxml2", "python"), node("libxml2"), variant_value("libxml2", "python", "True"). +variant_set("python", "shared", "True") :- depends_on("libxml2", "python"), node("libxml2"), variant_value("libxml2", "python", "True"). + +declared_dependency("libxml2", "xz", "build"). +declared_dependency("libxml2", "xz", "link"). +node("xz") :- depends_on("libxml2", "xz"), node("libxml2"). + +declared_dependency("libxml2", "zlib", "build"). +declared_dependency("libxml2", "zlib", "link"). +node("zlib") :- depends_on("libxml2", "zlib"), node("libxml2"). + + +%---------------------------------------------------------------------------- +% Package: libxrender +%---------------------------------------------------------------------------- +version_declared("libxrender", "0.9.10", 0). +version_declared("libxrender", "0.9.9", 1). + +declared_dependency("libxrender", "libx11", "build"). +declared_dependency("libxrender", "libx11", "link"). +node("libx11") :- depends_on("libxrender", "libx11"), node("libxrender"). + +declared_dependency("libxrender", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxrender", "pkgconfig"), node("libxrender"). + +declared_dependency("libxrender", "renderproto", "build"). +declared_dependency("libxrender", "renderproto", "link"). +node("renderproto") :- depends_on("libxrender", "renderproto"), node("libxrender"). + +declared_dependency("libxrender", "util-macros", "build"). +node("util-macros") :- depends_on("libxrender", "util-macros"), node("libxrender"). + + +%---------------------------------------------------------------------------- +% Package: libxscrnsaver +%---------------------------------------------------------------------------- +version_declared("libxscrnsaver", "1.2.2", 0). + +declared_dependency("libxscrnsaver", "libx11", "build"). +declared_dependency("libxscrnsaver", "libx11", "link"). +node("libx11") :- depends_on("libxscrnsaver", "libx11"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "libxext", "build"). +declared_dependency("libxscrnsaver", "libxext", "link"). +node("libxext") :- depends_on("libxscrnsaver", "libxext"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxscrnsaver", "pkgconfig"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "scrnsaverproto", "build"). +node("scrnsaverproto") :- depends_on("libxscrnsaver", "scrnsaverproto"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "util-macros", "build"). +node("util-macros") :- depends_on("libxscrnsaver", "util-macros"), node("libxscrnsaver"). + +declared_dependency("libxscrnsaver", "xextproto", "build"). +node("xextproto") :- depends_on("libxscrnsaver", "xextproto"), node("libxscrnsaver"). + + +%---------------------------------------------------------------------------- +% Package: libxslt +%---------------------------------------------------------------------------- +version_declared("libxslt", "1.1.33", 0). +version_declared("libxslt", "1.1.32", 1). +version_declared("libxslt", "1.1.29", 2). +version_declared("libxslt", "1.1.28", 3). +version_declared("libxslt", "1.1.26", 4). + +variant("libxslt", "crypto"). +variant_single_value("libxslt", "crypto"). +variant_default_value("libxslt", "crypto", "True"). +variant_possible_value("libxslt", "crypto", "False"). +variant_possible_value("libxslt", "crypto", "True"). + +variant("libxslt", "python"). +variant_single_value("libxslt", "python"). +variant_default_value("libxslt", "python", "False"). +variant_possible_value("libxslt", "python", "False"). +variant_possible_value("libxslt", "python", "True"). + +declared_dependency("libxslt", "libgcrypt", "build") :- node("libxslt"), variant_value("libxslt", "crypto", "True"). +declared_dependency("libxslt", "libgcrypt", "link") :- node("libxslt"), variant_value("libxslt", "crypto", "True"). +node("libgcrypt") :- depends_on("libxslt", "libgcrypt"), node("libxslt"), variant_value("libxslt", "crypto", "True"). + +declared_dependency("libxslt", "libiconv", "build"). +declared_dependency("libxslt", "libiconv", "link"). +node("libiconv") :- depends_on("libxslt", "libiconv"), node("libxslt"). + +declared_dependency("libxslt", "libxml2", "build"). +declared_dependency("libxslt", "libxml2", "link"). +node("libxml2") :- depends_on("libxslt", "libxml2"), node("libxslt"). +declared_dependency("libxslt", "libxml2", "build") :- node("libxslt"), variant_value("libxslt", "python", "True"). +declared_dependency("libxslt", "libxml2", "link") :- node("libxslt"), variant_value("libxslt", "python", "True"). +node("libxml2") :- depends_on("libxslt", "libxml2"), node("libxslt"), variant_value("libxslt", "python", "True"). +variant_set("libxml2", "python", "True") :- depends_on("libxslt", "libxml2"), node("libxslt"), variant_value("libxslt", "python", "True"). + +declared_dependency("libxslt", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxslt", "pkgconfig"), node("libxslt"). + +declared_dependency("libxslt", "python", "build") :- node("libxslt"), variant_value("libxslt", "python", "True"). +declared_dependency("libxslt", "python", "link") :- node("libxslt"), variant_value("libxslt", "python", "True"). +node("python") :- depends_on("libxslt", "python"), node("libxslt"), variant_value("libxslt", "python", "True"). +variant_set("python", "shared", "True") :- depends_on("libxslt", "python"), node("libxslt"), variant_value("libxslt", "python", "True"). + +declared_dependency("libxslt", "xz", "build"). +declared_dependency("libxslt", "xz", "link"). +node("xz") :- depends_on("libxslt", "xz"), node("libxslt"). + +declared_dependency("libxslt", "zlib", "build"). +declared_dependency("libxslt", "zlib", "link"). +node("zlib") :- depends_on("libxslt", "zlib"), node("libxslt"). + + +%---------------------------------------------------------------------------- +% Package: libxt +%---------------------------------------------------------------------------- +version_declared("libxt", "1.1.5", 0). + +declared_dependency("libxt", "kbproto", "build"). +node("kbproto") :- depends_on("libxt", "kbproto"), node("libxt"). + +declared_dependency("libxt", "libice", "build"). +declared_dependency("libxt", "libice", "link"). +node("libice") :- depends_on("libxt", "libice"), node("libxt"). + +declared_dependency("libxt", "libsm", "build"). +declared_dependency("libxt", "libsm", "link"). +node("libsm") :- depends_on("libxt", "libsm"), node("libxt"). + +declared_dependency("libxt", "libx11", "build"). +declared_dependency("libxt", "libx11", "link"). +node("libx11") :- depends_on("libxt", "libx11"), node("libxt"). + +declared_dependency("libxt", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxt", "pkgconfig"), node("libxt"). + +declared_dependency("libxt", "util-macros", "build"). +node("util-macros") :- depends_on("libxt", "util-macros"), node("libxt"). + +declared_dependency("libxt", "xproto", "build"). +node("xproto") :- depends_on("libxt", "xproto"), node("libxt"). + + +%---------------------------------------------------------------------------- +% Package: libxtst +%---------------------------------------------------------------------------- +version_declared("libxtst", "1.2.2", 0). + +declared_dependency("libxtst", "fixesproto", "build"). +node("fixesproto") :- depends_on("libxtst", "fixesproto"), node("libxtst"). + +declared_dependency("libxtst", "inputproto", "build"). +node("inputproto") :- depends_on("libxtst", "inputproto"), node("libxtst"). + +declared_dependency("libxtst", "libx11", "build"). +declared_dependency("libxtst", "libx11", "link"). +node("libx11") :- depends_on("libxtst", "libx11"), node("libxtst"). + +declared_dependency("libxtst", "libxext", "build"). +declared_dependency("libxtst", "libxext", "link"). +node("libxext") :- depends_on("libxtst", "libxext"), node("libxtst"). + +declared_dependency("libxtst", "libxi", "build"). +declared_dependency("libxtst", "libxi", "link"). +node("libxi") :- depends_on("libxtst", "libxi"), node("libxtst"). + +declared_dependency("libxtst", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libxtst", "pkgconfig"), node("libxtst"). + +declared_dependency("libxtst", "recordproto", "build"). +node("recordproto") :- depends_on("libxtst", "recordproto"), node("libxtst"). + +declared_dependency("libxtst", "util-macros", "build"). +node("util-macros") :- depends_on("libxtst", "util-macros"), node("libxtst"). + +declared_dependency("libxtst", "xextproto", "build"). +node("xextproto") :- depends_on("libxtst", "xextproto"), node("libxtst"). + + +%---------------------------------------------------------------------------- +% Package: libzmq +%---------------------------------------------------------------------------- +version_declared("libzmq", "4.3.2", 0). +version_declared("libzmq", "4.3.1", 1). +version_declared("libzmq", "4.3.0", 2). +version_declared("libzmq", "4.2.5", 3). +version_declared("libzmq", "4.2.2", 4). +version_declared("libzmq", "4.1.4", 5). +version_declared("libzmq", "4.1.2", 6). +version_declared("libzmq", "4.1.1", 7). +version_declared("libzmq", "4.0.7", 8). +version_declared("libzmq", "4.0.6", 9). +version_declared("libzmq", "4.0.5", 10). +version_declared("libzmq", "develop", 11). + +variant("libzmq", "libsodium"). +variant_single_value("libzmq", "libsodium"). +variant_default_value("libzmq", "libsodium", "True"). +variant_possible_value("libzmq", "libsodium", "False"). +variant_possible_value("libzmq", "libsodium", "True"). + +declared_dependency("libzmq", "autoconf", "build") :- node("libzmq"), 1 { version("libzmq", "develop") } 1. +node("autoconf") :- depends_on("libzmq", "autoconf"), node("libzmq"), 1 { version("libzmq", "develop") } 1. + +declared_dependency("libzmq", "automake", "build") :- node("libzmq"), 1 { version("libzmq", "develop") } 1. +node("automake") :- depends_on("libzmq", "automake"), node("libzmq"), 1 { version("libzmq", "develop") } 1. + +declared_dependency("libzmq", "libsodium", "build") :- node("libzmq"), 1 { version("libzmq", "4.0.5"); version("libzmq", "4.0.6"); version("libzmq", "4.0.7"); version("libzmq", "4.1.1"); version("libzmq", "4.1.2") } 1, variant_value("libzmq", "libsodium", "True"). +declared_dependency("libzmq", "libsodium", "link") :- node("libzmq"), 1 { version("libzmq", "4.0.5"); version("libzmq", "4.0.6"); version("libzmq", "4.0.7"); version("libzmq", "4.1.1"); version("libzmq", "4.1.2") } 1, variant_value("libzmq", "libsodium", "True"). +node("libsodium") :- depends_on("libzmq", "libsodium"), node("libzmq"), 1 { version("libzmq", "4.0.5"); version("libzmq", "4.0.6"); version("libzmq", "4.0.7"); version("libzmq", "4.1.1"); version("libzmq", "4.1.2") } 1, variant_value("libzmq", "libsodium", "True"). +1 { version("libsodium", "0.7.1"); version("libsodium", "1.0.0"); version("libsodium", "1.0.1"); version("libsodium", "1.0.2"); version("libsodium", "1.0.3") } 1 :- depends_on("libzmq", "libsodium"), node("libzmq"), 1 { version("libzmq", "4.0.5"); version("libzmq", "4.0.6"); version("libzmq", "4.0.7"); version("libzmq", "4.1.1"); version("libzmq", "4.1.2") } 1, variant_value("libzmq", "libsodium", "True"). +declared_dependency("libzmq", "libsodium", "build") :- node("libzmq"), variant_value("libzmq", "libsodium", "True"). +declared_dependency("libzmq", "libsodium", "link") :- node("libzmq"), variant_value("libzmq", "libsodium", "True"). +node("libsodium") :- depends_on("libzmq", "libsodium"), node("libzmq"), variant_value("libzmq", "libsodium", "True"). + +declared_dependency("libzmq", "libtool", "build") :- node("libzmq"), 1 { version("libzmq", "develop") } 1. +node("libtool") :- depends_on("libzmq", "libtool"), node("libzmq"), 1 { version("libzmq", "develop") } 1. + +declared_dependency("libzmq", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("libzmq", "pkgconfig"), node("libzmq"). + + +%---------------------------------------------------------------------------- +% Package: llvm +%---------------------------------------------------------------------------- +version_declared("llvm", "9.0.1", 0). +version_declared("llvm", "9.0.0", 1). +version_declared("llvm", "8.0.0", 2). +version_declared("llvm", "7.1.0", 3). +version_declared("llvm", "7.0.1", 4). +version_declared("llvm", "6.0.1", 5). +version_declared("llvm", "6.0.0", 6). +version_declared("llvm", "5.0.2", 7). +version_declared("llvm", "5.0.1", 8). +version_declared("llvm", "5.0.0", 9). +version_declared("llvm", "4.0.1", 10). +version_declared("llvm", "4.0.0", 11). +version_declared("llvm", "3.9.1", 12). +version_declared("llvm", "3.9.0", 13). +version_declared("llvm", "3.8.1", 14). +version_declared("llvm", "3.8.0", 15). +version_declared("llvm", "3.7.1", 16). +version_declared("llvm", "3.7.0", 17). +version_declared("llvm", "3.6.2", 18). +version_declared("llvm", "3.5.1", 19). +version_declared("llvm", "master", 20). + +variant("llvm", "all_targets"). +variant_single_value("llvm", "all_targets"). +variant_default_value("llvm", "all_targets", "False"). +variant_possible_value("llvm", "all_targets", "False"). +variant_possible_value("llvm", "all_targets", "True"). + +variant("llvm", "build_type"). +variant_single_value("llvm", "build_type"). +variant_default_value("llvm", "build_type", "Release"). +variant_possible_value("llvm", "build_type", "Debug"). +variant_possible_value("llvm", "build_type", "MinSizeRel"). +variant_possible_value("llvm", "build_type", "RelWithDebInfo"). +variant_possible_value("llvm", "build_type", "Release"). + +variant("llvm", "clang"). +variant_single_value("llvm", "clang"). +variant_default_value("llvm", "clang", "True"). +variant_possible_value("llvm", "clang", "False"). +variant_possible_value("llvm", "clang", "True"). + +variant("llvm", "compiler-rt"). +variant_single_value("llvm", "compiler-rt"). +variant_default_value("llvm", "compiler-rt", "True"). +variant_possible_value("llvm", "compiler-rt", "False"). +variant_possible_value("llvm", "compiler-rt", "True"). + +variant("llvm", "gold"). +variant_single_value("llvm", "gold"). +variant_default_value("llvm", "gold", "True"). +variant_possible_value("llvm", "gold", "False"). +variant_possible_value("llvm", "gold", "True"). + +variant("llvm", "internal_unwind"). +variant_single_value("llvm", "internal_unwind"). +variant_default_value("llvm", "internal_unwind", "True"). +variant_possible_value("llvm", "internal_unwind", "False"). +variant_possible_value("llvm", "internal_unwind", "True"). + +variant("llvm", "libcxx"). +variant_single_value("llvm", "libcxx"). +variant_default_value("llvm", "libcxx", "True"). +variant_possible_value("llvm", "libcxx", "False"). +variant_possible_value("llvm", "libcxx", "True"). + +variant("llvm", "link_dylib"). +variant_single_value("llvm", "link_dylib"). +variant_default_value("llvm", "link_dylib", "False"). +variant_possible_value("llvm", "link_dylib", "False"). +variant_possible_value("llvm", "link_dylib", "True"). + +variant("llvm", "lld"). +variant_single_value("llvm", "lld"). +variant_default_value("llvm", "lld", "True"). +variant_possible_value("llvm", "lld", "False"). +variant_possible_value("llvm", "lld", "True"). + +variant("llvm", "lldb"). +variant_single_value("llvm", "lldb"). +variant_default_value("llvm", "lldb", "True"). +variant_possible_value("llvm", "lldb", "False"). +variant_possible_value("llvm", "lldb", "True"). + +variant("llvm", "omp_tsan"). +variant_single_value("llvm", "omp_tsan"). +variant_default_value("llvm", "omp_tsan", "False"). +variant_possible_value("llvm", "omp_tsan", "False"). +variant_possible_value("llvm", "omp_tsan", "True"). + +variant("llvm", "polly"). +variant_single_value("llvm", "polly"). +variant_default_value("llvm", "polly", "True"). +variant_possible_value("llvm", "polly", "False"). +variant_possible_value("llvm", "polly", "True"). + +variant("llvm", "python"). +variant_single_value("llvm", "python"). +variant_default_value("llvm", "python", "False"). +variant_possible_value("llvm", "python", "False"). +variant_possible_value("llvm", "python", "True"). + +variant("llvm", "shared_libs"). +variant_single_value("llvm", "shared_libs"). +variant_default_value("llvm", "shared_libs", "False"). +variant_possible_value("llvm", "shared_libs", "False"). +variant_possible_value("llvm", "shared_libs", "True"). + +declared_dependency("llvm", "binutils", "build") :- node("llvm"), variant_value("llvm", "gold", "True"). +declared_dependency("llvm", "binutils", "link") :- node("llvm"), variant_value("llvm", "gold", "True"). +node("binutils") :- depends_on("llvm", "binutils"), node("llvm"), variant_value("llvm", "gold", "True"). +variant_set("binutils", "gold", "True") :- depends_on("llvm", "binutils"), node("llvm"), variant_value("llvm", "gold", "True"). + +declared_dependency("llvm", "cmake", "build"). +node("cmake") :- depends_on("llvm", "cmake"), node("llvm"). +1 { version("cmake", "3.4.3"); version("cmake", "3.5.0"); version("cmake", "3.5.1"); version("cmake", "3.5.2"); version("cmake", "3.6.0"); version("cmake", "3.6.1"); version("cmake", "3.7.1"); version("cmake", "3.7.2"); version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3"); version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4"); version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1 :- depends_on("llvm", "cmake"), node("llvm"). + +declared_dependency("llvm", "gmp", "build") :- node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2") } 1, variant_value("llvm", "polly", "True"). +declared_dependency("llvm", "gmp", "link") :- node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2") } 1, variant_value("llvm", "polly", "True"). +node("gmp") :- depends_on("llvm", "gmp"), node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2") } 1, variant_value("llvm", "polly", "True"). + +declared_dependency("llvm", "isl", "build") :- node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2") } 1, variant_value("llvm", "polly", "True"). +declared_dependency("llvm", "isl", "link") :- node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2") } 1, variant_value("llvm", "polly", "True"). +node("isl") :- depends_on("llvm", "isl"), node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2") } 1, variant_value("llvm", "polly", "True"). + +declared_dependency("llvm", "libedit", "build") :- node("llvm"), variant_value("llvm", "lldb", "True"). +declared_dependency("llvm", "libedit", "link") :- node("llvm"), variant_value("llvm", "lldb", "True"). +node("libedit") :- depends_on("llvm", "libedit"), node("llvm"), variant_value("llvm", "lldb", "True"). + +declared_dependency("llvm", "ncurses", "build"). +declared_dependency("llvm", "ncurses", "link"). +node("ncurses") :- depends_on("llvm", "ncurses"), node("llvm"). +variant_set("ncurses", "termlib", "True") :- depends_on("llvm", "ncurses"), node("llvm"). + +declared_dependency("llvm", "perl-data-dumper", "build"). +node("perl-data-dumper") :- depends_on("llvm", "perl-data-dumper"), node("llvm"). + +declared_dependency("llvm", "py-six", "build") :- node("llvm"), 1 { version("llvm", "5.0.0"); version("llvm", "5.0.1"); version("llvm", "5.0.2"); version("llvm", "6.0.0"); version("llvm", "6.0.1"); version("llvm", "7.0.1"); version("llvm", "7.1.0"); version("llvm", "8.0.0"); version("llvm", "9.0.0"); version("llvm", "9.0.1"); version("llvm", "master") } 1, variant_value("llvm", "lldb", "True"), variant_value("llvm", "python", "True"). +declared_dependency("llvm", "py-six", "link") :- node("llvm"), 1 { version("llvm", "5.0.0"); version("llvm", "5.0.1"); version("llvm", "5.0.2"); version("llvm", "6.0.0"); version("llvm", "6.0.1"); version("llvm", "7.0.1"); version("llvm", "7.1.0"); version("llvm", "8.0.0"); version("llvm", "9.0.0"); version("llvm", "9.0.1"); version("llvm", "master") } 1, variant_value("llvm", "lldb", "True"), variant_value("llvm", "python", "True"). +node("py-six") :- depends_on("llvm", "py-six"), node("llvm"), 1 { version("llvm", "5.0.0"); version("llvm", "5.0.1"); version("llvm", "5.0.2"); version("llvm", "6.0.0"); version("llvm", "6.0.1"); version("llvm", "7.0.1"); version("llvm", "7.1.0"); version("llvm", "8.0.0"); version("llvm", "9.0.0"); version("llvm", "9.0.1"); version("llvm", "master") } 1, variant_value("llvm", "lldb", "True"), variant_value("llvm", "python", "True"). + +declared_dependency("llvm", "python", "build") :- node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2"); version("llvm", "3.7.0"); version("llvm", "3.7.1"); version("llvm", "3.8.0"); version("llvm", "3.8.1"); version("llvm", "3.9.0"); version("llvm", "3.9.1"); version("llvm", "4.0.0"); version("llvm", "4.0.1") } 1, variant_value("llvm", "python", "False"). +node("python") :- depends_on("llvm", "python"), node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2"); version("llvm", "3.7.0"); version("llvm", "3.7.1"); version("llvm", "3.8.0"); version("llvm", "3.8.1"); version("llvm", "3.9.0"); version("llvm", "3.9.1"); version("llvm", "4.0.0"); version("llvm", "4.0.1") } 1, variant_value("llvm", "python", "False"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16") } 1 :- depends_on("llvm", "python"), node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2"); version("llvm", "3.7.0"); version("llvm", "3.7.1"); version("llvm", "3.8.0"); version("llvm", "3.8.1"); version("llvm", "3.9.0"); version("llvm", "3.9.1"); version("llvm", "4.0.0"); version("llvm", "4.0.1") } 1, variant_value("llvm", "python", "False"). +declared_dependency("llvm", "python", "build") :- node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2"); version("llvm", "3.7.0"); version("llvm", "3.7.1"); version("llvm", "3.8.0"); version("llvm", "3.8.1"); version("llvm", "3.9.0"); version("llvm", "3.9.1"); version("llvm", "4.0.0"); version("llvm", "4.0.1") } 1, variant_value("llvm", "python", "True"). +declared_dependency("llvm", "python", "link") :- node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2"); version("llvm", "3.7.0"); version("llvm", "3.7.1"); version("llvm", "3.8.0"); version("llvm", "3.8.1"); version("llvm", "3.9.0"); version("llvm", "3.9.1"); version("llvm", "4.0.0"); version("llvm", "4.0.1") } 1, variant_value("llvm", "python", "True"). +node("python") :- depends_on("llvm", "python"), node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2"); version("llvm", "3.7.0"); version("llvm", "3.7.1"); version("llvm", "3.8.0"); version("llvm", "3.8.1"); version("llvm", "3.9.0"); version("llvm", "3.9.1"); version("llvm", "4.0.0"); version("llvm", "4.0.1") } 1, variant_value("llvm", "python", "True"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16") } 1 :- depends_on("llvm", "python"), node("llvm"), 1 { version("llvm", "3.5.1"); version("llvm", "3.6.2"); version("llvm", "3.7.0"); version("llvm", "3.7.1"); version("llvm", "3.8.0"); version("llvm", "3.8.1"); version("llvm", "3.9.0"); version("llvm", "3.9.1"); version("llvm", "4.0.0"); version("llvm", "4.0.1") } 1, variant_value("llvm", "python", "True"). +declared_dependency("llvm", "python", "build") :- node("llvm"), variant_value("llvm", "python", "True"). +declared_dependency("llvm", "python", "link") :- node("llvm"), variant_value("llvm", "python", "True"). +node("python") :- depends_on("llvm", "python"), node("llvm"), variant_value("llvm", "python", "True"). +declared_dependency("llvm", "python", "build") :- node("llvm"), 1 { version("llvm", "5.0.0"); version("llvm", "5.0.1"); version("llvm", "5.0.2"); version("llvm", "6.0.0"); version("llvm", "6.0.1"); version("llvm", "7.0.1"); version("llvm", "7.1.0"); version("llvm", "8.0.0"); version("llvm", "9.0.0"); version("llvm", "9.0.1"); version("llvm", "master") } 1, variant_value("llvm", "python", "False"). +node("python") :- depends_on("llvm", "python"), node("llvm"), 1 { version("llvm", "5.0.0"); version("llvm", "5.0.1"); version("llvm", "5.0.2"); version("llvm", "6.0.0"); version("llvm", "6.0.1"); version("llvm", "7.0.1"); version("llvm", "7.1.0"); version("llvm", "8.0.0"); version("llvm", "9.0.0"); version("llvm", "9.0.1"); version("llvm", "master") } 1, variant_value("llvm", "python", "False"). +declared_dependency("llvm", "python", "build") :- node("llvm"), 1 { version("llvm", "5.0.0"); version("llvm", "5.0.1"); version("llvm", "5.0.2"); version("llvm", "6.0.0"); version("llvm", "6.0.1"); version("llvm", "7.0.1"); version("llvm", "7.1.0"); version("llvm", "8.0.0"); version("llvm", "9.0.0"); version("llvm", "9.0.1"); version("llvm", "master") } 1, variant_value("llvm", "python", "True"). +declared_dependency("llvm", "python", "link") :- node("llvm"), 1 { version("llvm", "5.0.0"); version("llvm", "5.0.1"); version("llvm", "5.0.2"); version("llvm", "6.0.0"); version("llvm", "6.0.1"); version("llvm", "7.0.1"); version("llvm", "7.1.0"); version("llvm", "8.0.0"); version("llvm", "9.0.0"); version("llvm", "9.0.1"); version("llvm", "master") } 1, variant_value("llvm", "python", "True"). +node("python") :- depends_on("llvm", "python"), node("llvm"), 1 { version("llvm", "5.0.0"); version("llvm", "5.0.1"); version("llvm", "5.0.2"); version("llvm", "6.0.0"); version("llvm", "6.0.1"); version("llvm", "7.0.1"); version("llvm", "7.1.0"); version("llvm", "8.0.0"); version("llvm", "9.0.0"); version("llvm", "9.0.1"); version("llvm", "master") } 1, variant_value("llvm", "python", "True"). + +declared_dependency("llvm", "swig", "build") :- node("llvm"), variant_value("llvm", "lldb", "True"). +declared_dependency("llvm", "swig", "link") :- node("llvm"), variant_value("llvm", "lldb", "True"). +node("swig") :- depends_on("llvm", "swig"), node("llvm"), variant_value("llvm", "lldb", "True"). + + +%---------------------------------------------------------------------------- +% Package: lm-sensors +%---------------------------------------------------------------------------- +version_declared("lm-sensors", "3-6-0", 0). +version_declared("lm-sensors", "3-5-0", 1). +version_declared("lm-sensors", "3-4-0", 2). +version_declared("lm-sensors", "3-3-5", 3). +version_declared("lm-sensors", "3-3-4", 4). +version_declared("lm-sensors", "3-3-3", 5). +version_declared("lm-sensors", "3-3-2", 6). +version_declared("lm-sensors", "3-3-1", 7). +version_declared("lm-sensors", "3-3-0", 8). +version_declared("lm-sensors", "3-2-0", 9). +version_declared("lm-sensors", "3-1-2", 10). +version_declared("lm-sensors", "3-1-1", 11). + +declared_dependency("lm-sensors", "bison", "build"). +node("bison") :- depends_on("lm-sensors", "bison"), node("lm-sensors"). + +declared_dependency("lm-sensors", "flex", "build"). +node("flex") :- depends_on("lm-sensors", "flex"), node("lm-sensors"). + +declared_dependency("lm-sensors", "perl", "run"). +node("perl") :- depends_on("lm-sensors", "perl"), node("lm-sensors"). + + +%---------------------------------------------------------------------------- +% Package: lsf +%---------------------------------------------------------------------------- + + +%---------------------------------------------------------------------------- +% Package: lz4 +%---------------------------------------------------------------------------- +version_declared("lz4", "1.9.2", 0). +version_declared("lz4", "1.9.0", 1). +version_declared("lz4", "1.8.3", 2). +version_declared("lz4", "1.8.1.2", 3). +version_declared("lz4", "1.7.5", 4). +version_declared("lz4", "1.3.1", 5). + +declared_dependency("lz4", "valgrind", "test"). +node("valgrind") :- depends_on("lz4", "valgrind"), node("lz4"). + + +%---------------------------------------------------------------------------- +% Package: lzo +%---------------------------------------------------------------------------- +version_declared("lzo", "2.10", 0). +version_declared("lzo", "2.09", 1). +version_declared("lzo", "2.08", 2). +version_declared("lzo", "2.07", 3). +version_declared("lzo", "2.06", 4). +version_declared("lzo", "2.05", 5). + + +%---------------------------------------------------------------------------- +% Package: m4 +%---------------------------------------------------------------------------- +version_declared("m4", "1.4.18", 0). +version_declared("m4", "1.4.17", 1). + +variant("m4", "sigsegv"). +variant_single_value("m4", "sigsegv"). +variant_default_value("m4", "sigsegv", "True"). +variant_possible_value("m4", "sigsegv", "False"). +variant_possible_value("m4", "sigsegv", "True"). + +declared_dependency("m4", "libsigsegv", "build") :- node("m4"), variant_value("m4", "sigsegv", "True"). +declared_dependency("m4", "libsigsegv", "link") :- node("m4"), variant_value("m4", "sigsegv", "True"). +node("libsigsegv") :- depends_on("m4", "libsigsegv"), node("m4"), variant_value("m4", "sigsegv", "True"). + + +%---------------------------------------------------------------------------- +% Package: mariadb +%---------------------------------------------------------------------------- +version_declared("mariadb", "10.4.8", 0). +version_declared("mariadb", "10.4.7", 1). +version_declared("mariadb", "10.2.8", 2). +version_declared("mariadb", "10.1.23", 3). +version_declared("mariadb", "10.1.14", 4). +version_declared("mariadb", "5.5.56", 5). +version_declared("mariadb", "5.5.49", 6). + +variant("mariadb", "build_type"). +variant_single_value("mariadb", "build_type"). +variant_default_value("mariadb", "build_type", "RelWithDebInfo"). +variant_possible_value("mariadb", "build_type", "Debug"). +variant_possible_value("mariadb", "build_type", "MinSizeRel"). +variant_possible_value("mariadb", "build_type", "RelWithDebInfo"). +variant_possible_value("mariadb", "build_type", "Release"). + +variant("mariadb", "nonblocking"). +variant_single_value("mariadb", "nonblocking"). +variant_default_value("mariadb", "nonblocking", "True"). +variant_possible_value("mariadb", "nonblocking", "False"). +variant_possible_value("mariadb", "nonblocking", "True"). + +declared_dependency("mariadb", "bison", "build"). +node("bison") :- depends_on("mariadb", "bison"), node("mariadb"). + +declared_dependency("mariadb", "boost", "build"). +declared_dependency("mariadb", "boost", "link"). +node("boost") :- depends_on("mariadb", "boost"), node("mariadb"). + +declared_dependency("mariadb", "cmake", "build"). +node("cmake") :- depends_on("mariadb", "cmake"), node("mariadb"). + +declared_dependency("mariadb", "curl", "build"). +declared_dependency("mariadb", "curl", "link"). +node("curl") :- depends_on("mariadb", "curl"), node("mariadb"). + +declared_dependency("mariadb", "jemalloc", "build"). +declared_dependency("mariadb", "jemalloc", "link"). +node("jemalloc") :- depends_on("mariadb", "jemalloc"), node("mariadb"). + +declared_dependency("mariadb", "libaio", "build") :- node("mariadb"), node_platform("mariadb", "linux"). +declared_dependency("mariadb", "libaio", "link") :- node("mariadb"), node_platform("mariadb", "linux"). +node("libaio") :- depends_on("mariadb", "libaio"), node("mariadb"), node_platform("mariadb", "linux"). + +declared_dependency("mariadb", "libedit", "build"). +declared_dependency("mariadb", "libedit", "link"). +node("libedit") :- depends_on("mariadb", "libedit"), node("mariadb"). + +declared_dependency("mariadb", "libevent", "build") :- node("mariadb"), variant_value("mariadb", "nonblocking", "True"). +declared_dependency("mariadb", "libevent", "link") :- node("mariadb"), variant_value("mariadb", "nonblocking", "True"). +node("libevent") :- depends_on("mariadb", "libevent"), node("mariadb"), variant_value("mariadb", "nonblocking", "True"). + +declared_dependency("mariadb", "libxml2", "build"). +declared_dependency("mariadb", "libxml2", "link"). +node("libxml2") :- depends_on("mariadb", "libxml2"), node("mariadb"). + +declared_dependency("mariadb", "libzmq", "build"). +declared_dependency("mariadb", "libzmq", "link"). +node("libzmq") :- depends_on("mariadb", "libzmq"), node("mariadb"). + +declared_dependency("mariadb", "lz4", "build"). +declared_dependency("mariadb", "lz4", "link"). +node("lz4") :- depends_on("mariadb", "lz4"), node("mariadb"). + +declared_dependency("mariadb", "msgpack-c", "build"). +declared_dependency("mariadb", "msgpack-c", "link"). +node("msgpack-c") :- depends_on("mariadb", "msgpack-c"), node("mariadb"). + +declared_dependency("mariadb", "ncurses", "build"). +declared_dependency("mariadb", "ncurses", "link"). +node("ncurses") :- depends_on("mariadb", "ncurses"), node("mariadb"). + +declared_dependency("mariadb", "openssl", "build") :- node("mariadb"), 1 { version("mariadb", "5.5.49"); version("mariadb", "5.5.56"); version("mariadb", "10.1.14"); version("mariadb", "10.1.23") } 1. +declared_dependency("mariadb", "openssl", "link") :- node("mariadb"), 1 { version("mariadb", "5.5.49"); version("mariadb", "5.5.56"); version("mariadb", "10.1.14"); version("mariadb", "10.1.23") } 1. +node("openssl") :- depends_on("mariadb", "openssl"), node("mariadb"), 1 { version("mariadb", "5.5.49"); version("mariadb", "5.5.56"); version("mariadb", "10.1.14"); version("mariadb", "10.1.23") } 1. +1 { version("openssl", "1.0.1e"); version("openssl", "1.0.1h"); version("openssl", "1.0.1r"); version("openssl", "1.0.1t"); version("openssl", "1.0.1u"); version("openssl", "1.0.2d"); version("openssl", "1.0.2e"); version("openssl", "1.0.2f"); version("openssl", "1.0.2g"); version("openssl", "1.0.2h"); version("openssl", "1.0.2i"); version("openssl", "1.0.2j"); version("openssl", "1.0.2k"); version("openssl", "1.0.2m"); version("openssl", "1.0.2n"); version("openssl", "1.0.2o"); version("openssl", "1.0.2p"); version("openssl", "1.0.2r"); version("openssl", "1.0.2s"); version("openssl", "1.0.2t") } 1 :- depends_on("mariadb", "openssl"), node("mariadb"), 1 { version("mariadb", "5.5.49"); version("mariadb", "5.5.56"); version("mariadb", "10.1.14"); version("mariadb", "10.1.23") } 1. +declared_dependency("mariadb", "openssl", "build"). +declared_dependency("mariadb", "openssl", "link"). +node("openssl") :- depends_on("mariadb", "openssl"), node("mariadb"). + +declared_dependency("mariadb", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("mariadb", "pkgconfig"), node("mariadb"). + +declared_dependency("mariadb", "zlib", "build"). +declared_dependency("mariadb", "zlib", "link"). +node("zlib") :- depends_on("mariadb", "zlib"), node("mariadb"). + + +%---------------------------------------------------------------------------- +% Package: mawk +%---------------------------------------------------------------------------- +version_declared("mawk", "1.3.4-20171017", 0). +version_declared("mawk", "1.3.4", 1). + + +%---------------------------------------------------------------------------- +% Package: mesa +%---------------------------------------------------------------------------- +version_declared("mesa", "18.3.6", 0). + +variant("mesa", "glx"). +variant_single_value("mesa", "glx"). +variant_default_value("mesa", "glx", "False"). +variant_possible_value("mesa", "glx", "False"). +variant_possible_value("mesa", "glx", "True"). + +variant("mesa", "llvm"). +variant_single_value("mesa", "llvm"). +variant_default_value("mesa", "llvm", "True"). +variant_possible_value("mesa", "llvm", "False"). +variant_possible_value("mesa", "llvm", "True"). + +variant("mesa", "opengl"). +variant_single_value("mesa", "opengl"). +variant_default_value("mesa", "opengl", "True"). +variant_possible_value("mesa", "opengl", "False"). +variant_possible_value("mesa", "opengl", "True"). + +variant("mesa", "opengles"). +variant_single_value("mesa", "opengles"). +variant_default_value("mesa", "opengles", "False"). +variant_possible_value("mesa", "opengles", "False"). +variant_possible_value("mesa", "opengles", "True"). + +variant("mesa", "osmesa"). +variant_single_value("mesa", "osmesa"). +variant_default_value("mesa", "osmesa", "True"). +variant_possible_value("mesa", "osmesa", "False"). +variant_possible_value("mesa", "osmesa", "True"). + +variant("mesa", "swr"). +not variant_single_value("mesa", "swr"). +variant_default_value("mesa", "swr", "none"). +variant_possible_value("mesa", "swr", "avx"). +variant_possible_value("mesa", "swr", "avx2"). +variant_possible_value("mesa", "swr", "knl"). +variant_possible_value("mesa", "swr", "none"). +variant_possible_value("mesa", "swr", "skx"). + +declared_dependency("mesa", "autoconf", "build"). +node("autoconf") :- depends_on("mesa", "autoconf"), node("mesa"). + +declared_dependency("mesa", "automake", "build"). +node("automake") :- depends_on("mesa", "automake"), node("mesa"). + +declared_dependency("mesa", "bison", "build"). +node("bison") :- depends_on("mesa", "bison"), node("mesa"). + +declared_dependency("mesa", "expat", "build"). +declared_dependency("mesa", "expat", "link"). +node("expat") :- depends_on("mesa", "expat"), node("mesa"). + +declared_dependency("mesa", "flex", "build"). +node("flex") :- depends_on("mesa", "flex"), node("mesa"). + +declared_dependency("mesa", "gettext", "build"). +node("gettext") :- depends_on("mesa", "gettext"), node("mesa"). + +declared_dependency("mesa", "glproto", "build") :- node("mesa"), variant_value("mesa", "glx", "True"). +node("glproto") :- depends_on("mesa", "glproto"), node("mesa"), variant_value("mesa", "glx", "True"). + +declared_dependency("mesa", "libtool", "build"). +node("libtool") :- depends_on("mesa", "libtool"), node("mesa"). + +declared_dependency("mesa", "libx11", "build") :- node("mesa"), variant_value("mesa", "glx", "True"). +declared_dependency("mesa", "libx11", "link") :- node("mesa"), variant_value("mesa", "glx", "True"). +node("libx11") :- depends_on("mesa", "libx11"), node("mesa"), variant_value("mesa", "glx", "True"). + +declared_dependency("mesa", "libxcb", "build") :- node("mesa"), variant_value("mesa", "glx", "True"). +declared_dependency("mesa", "libxcb", "link") :- node("mesa"), variant_value("mesa", "glx", "True"). +node("libxcb") :- depends_on("mesa", "libxcb"), node("mesa"), variant_value("mesa", "glx", "True"). + +declared_dependency("mesa", "libxext", "build") :- node("mesa"), variant_value("mesa", "glx", "True"). +declared_dependency("mesa", "libxext", "link") :- node("mesa"), variant_value("mesa", "glx", "True"). +node("libxext") :- depends_on("mesa", "libxext"), node("mesa"), variant_value("mesa", "glx", "True"). + +declared_dependency("mesa", "libxml2", "build"). +declared_dependency("mesa", "libxml2", "link"). +node("libxml2") :- depends_on("mesa", "libxml2"), node("mesa"). + +declared_dependency("mesa", "llvm", "build") :- node("mesa"), variant_value("mesa", "llvm", "True"). +declared_dependency("mesa", "llvm", "link") :- node("mesa"), variant_value("mesa", "llvm", "True"). +node("llvm") :- depends_on("mesa", "llvm"), node("mesa"), variant_value("mesa", "llvm", "True"). +1 { version("llvm", "6.0.0"); version("llvm", "6.0.1"); version("llvm", "7.0.1"); version("llvm", "7.1.0"); version("llvm", "8.0.0"); version("llvm", "9.0.0"); version("llvm", "9.0.1"); version("llvm", "master") } 1 :- depends_on("mesa", "llvm"), node("mesa"), variant_value("mesa", "llvm", "True"). + +declared_dependency("mesa", "m4", "build"). +node("m4") :- depends_on("mesa", "m4"), node("mesa"). + +declared_dependency("mesa", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("mesa", "pkgconfig"), node("mesa"). + +declared_dependency("mesa", "py-mako", "build"). +node("py-mako") :- depends_on("mesa", "py-mako"), node("mesa"). + +declared_dependency("mesa", "python", "build"). +node("python") :- depends_on("mesa", "python"), node("mesa"). + +declared_dependency("mesa", "zlib", "build"). +declared_dependency("mesa", "zlib", "link"). +node("zlib") :- depends_on("mesa", "zlib"), node("mesa"). + + +%---------------------------------------------------------------------------- +% Package: meson +%---------------------------------------------------------------------------- +version_declared("meson", "0.49.1", 0). +version_declared("meson", "0.49.0", 1). +version_declared("meson", "0.42.0", 2). +version_declared("meson", "0.41.2", 3). +version_declared("meson", "0.41.1", 4). + +variant("meson", "ninjabuild"). +variant_single_value("meson", "ninjabuild"). +variant_default_value("meson", "ninjabuild", "True"). +variant_possible_value("meson", "ninjabuild", "False"). +variant_possible_value("meson", "ninjabuild", "True"). + +declared_dependency("meson", "ninja", "build") :- node("meson"), variant_value("meson", "ninjabuild", "True"). +declared_dependency("meson", "ninja", "run") :- node("meson"), variant_value("meson", "ninjabuild", "True"). +node("ninja") :- depends_on("meson", "ninja"), node("meson"), variant_value("meson", "ninjabuild", "True"). + +declared_dependency("meson", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("meson", "py-setuptools"), node("meson"). + +declared_dependency("meson", "python", "build"). +declared_dependency("meson", "python", "link"). +declared_dependency("meson", "python", "run"). +node("python") :- depends_on("meson", "python"), node("meson"). +1 { version("python", "3.1.5"); version("python", "3.2.6"); version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("meson", "python"), node("meson"). + + +%---------------------------------------------------------------------------- +% Package: mkfontdir +%---------------------------------------------------------------------------- +version_declared("mkfontdir", "1.0.7", 0). + +declared_dependency("mkfontdir", "mkfontscale", "run"). +node("mkfontscale") :- depends_on("mkfontdir", "mkfontscale"), node("mkfontdir"). + +declared_dependency("mkfontdir", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("mkfontdir", "pkgconfig"), node("mkfontdir"). + +declared_dependency("mkfontdir", "util-macros", "build"). +node("util-macros") :- depends_on("mkfontdir", "util-macros"), node("mkfontdir"). + + +%---------------------------------------------------------------------------- +% Package: mkfontscale +%---------------------------------------------------------------------------- +version_declared("mkfontscale", "1.1.2", 0). + +declared_dependency("mkfontscale", "freetype", "build"). +declared_dependency("mkfontscale", "freetype", "link"). +node("freetype") :- depends_on("mkfontscale", "freetype"), node("mkfontscale"). + +declared_dependency("mkfontscale", "libfontenc", "build"). +declared_dependency("mkfontscale", "libfontenc", "link"). +node("libfontenc") :- depends_on("mkfontscale", "libfontenc"), node("mkfontscale"). + +declared_dependency("mkfontscale", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("mkfontscale", "pkgconfig"), node("mkfontscale"). + +declared_dependency("mkfontscale", "util-macros", "build"). +node("util-macros") :- depends_on("mkfontscale", "util-macros"), node("mkfontscale"). + +declared_dependency("mkfontscale", "xproto", "build"). +node("xproto") :- depends_on("mkfontscale", "xproto"), node("mkfontscale"). + + +%---------------------------------------------------------------------------- +% Package: mpfr +%---------------------------------------------------------------------------- +version_declared("mpfr", "4.0.2", 0). +version_declared("mpfr", "4.0.1", 1). +version_declared("mpfr", "4.0.0", 2). +version_declared("mpfr", "3.1.6", 3). +version_declared("mpfr", "3.1.5", 4). +version_declared("mpfr", "3.1.4", 5). +version_declared("mpfr", "3.1.3", 6). +version_declared("mpfr", "3.1.2", 7). + +declared_dependency("mpfr", "gmp", "build"). +declared_dependency("mpfr", "gmp", "link"). +node("gmp") :- depends_on("mpfr", "gmp"), node("mpfr"). +declared_dependency("mpfr", "gmp", "build") :- node("mpfr"), 1 { version("mpfr", "4.0.0"); version("mpfr", "4.0.1"); version("mpfr", "4.0.2") } 1. +declared_dependency("mpfr", "gmp", "link") :- node("mpfr"), 1 { version("mpfr", "4.0.0"); version("mpfr", "4.0.1"); version("mpfr", "4.0.2") } 1. +node("gmp") :- depends_on("mpfr", "gmp"), node("mpfr"), 1 { version("mpfr", "4.0.0"); version("mpfr", "4.0.1"); version("mpfr", "4.0.2") } 1. +1 { version("gmp", "5.1.3"); version("gmp", "6.0.0a"); version("gmp", "6.1.0"); version("gmp", "6.1.1"); version("gmp", "6.1.2") } 1 :- depends_on("mpfr", "gmp"), node("mpfr"), 1 { version("mpfr", "4.0.0"); version("mpfr", "4.0.1"); version("mpfr", "4.0.2") } 1. + + +%---------------------------------------------------------------------------- +% Package: mpich +%---------------------------------------------------------------------------- +version_declared("mpich", "3.3.2", 0). +version_declared("mpich", "3.3.1", 1). +version_declared("mpich", "3.3", 2). +version_declared("mpich", "3.2.1", 3). +version_declared("mpich", "3.2", 4). +version_declared("mpich", "3.1.4", 5). +version_declared("mpich", "3.1.3", 6). +version_declared("mpich", "3.1.2", 7). +version_declared("mpich", "3.1.1", 8). +version_declared("mpich", "3.1", 9). +version_declared("mpich", "3.0.4", 10). +version_declared("mpich", "develop", 11). + +variant("mpich", "device"). +variant_single_value("mpich", "device"). +variant_default_value("mpich", "device", "ch3"). +variant_possible_value("mpich", "device", "ch3"). +variant_possible_value("mpich", "device", "ch4"). + +variant("mpich", "hydra"). +variant_single_value("mpich", "hydra"). +variant_default_value("mpich", "hydra", "True"). +variant_possible_value("mpich", "hydra", "False"). +variant_possible_value("mpich", "hydra", "True"). + +variant("mpich", "netmod"). +variant_single_value("mpich", "netmod"). +variant_default_value("mpich", "netmod", "tcp"). +variant_possible_value("mpich", "netmod", "mxm"). +variant_possible_value("mpich", "netmod", "ofi"). +variant_possible_value("mpich", "netmod", "tcp"). +variant_possible_value("mpich", "netmod", "ucx"). + +variant("mpich", "pci"). +variant_single_value("mpich", "pci"). +variant_default_value("mpich", "pci", "False"). +variant_possible_value("mpich", "pci", "False"). +variant_possible_value("mpich", "pci", "True"). + +variant("mpich", "pmi"). +variant_single_value("mpich", "pmi"). +variant_default_value("mpich", "pmi", "pmi"). +variant_possible_value("mpich", "pmi", "off"). +variant_possible_value("mpich", "pmi", "pmi"). +variant_possible_value("mpich", "pmi", "pmi2"). +variant_possible_value("mpich", "pmi", "pmix"). + +variant("mpich", "romio"). +variant_single_value("mpich", "romio"). +variant_default_value("mpich", "romio", "True"). +variant_possible_value("mpich", "romio", "False"). +variant_possible_value("mpich", "romio", "True"). + +variant("mpich", "slurm"). +variant_single_value("mpich", "slurm"). +variant_default_value("mpich", "slurm", "False"). +variant_possible_value("mpich", "slurm", "False"). +variant_possible_value("mpich", "slurm", "True"). + +variant("mpich", "verbs"). +variant_single_value("mpich", "verbs"). +variant_default_value("mpich", "verbs", "False"). +variant_possible_value("mpich", "verbs", "False"). +variant_possible_value("mpich", "verbs", "True"). + +variant("mpich", "wrapperrpath"). +variant_single_value("mpich", "wrapperrpath"). +variant_default_value("mpich", "wrapperrpath", "True"). +variant_possible_value("mpich", "wrapperrpath", "False"). +variant_possible_value("mpich", "wrapperrpath", "True"). + +declared_dependency("mpich", "autoconf", "build") :- node("mpich"), 1 { version("mpich", "develop") } 1. +node("autoconf") :- depends_on("mpich", "autoconf"), node("mpich"), 1 { version("mpich", "develop") } 1. +1 { version("autoconf", "2.69") } 1 :- depends_on("mpich", "autoconf"), node("mpich"), 1 { version("mpich", "develop") } 1. + +declared_dependency("mpich", "automake", "build") :- node("mpich"), 1 { version("mpich", "develop") } 1. +node("automake") :- depends_on("mpich", "automake"), node("mpich"), 1 { version("mpich", "develop") } 1. +1 { version("automake", "1.15"); version("automake", "1.15.1"); version("automake", "1.16.1") } 1 :- depends_on("mpich", "automake"), node("mpich"), 1 { version("mpich", "develop") } 1. + +declared_dependency("mpich", "findutils", "build"). +node("findutils") :- depends_on("mpich", "findutils"), node("mpich"). + +declared_dependency("mpich", "libfabric", "build") :- node("mpich"), variant_value("mpich", "device", "ch3"), variant_value("mpich", "netmod", "ofi"). +declared_dependency("mpich", "libfabric", "link") :- node("mpich"), variant_value("mpich", "device", "ch3"), variant_value("mpich", "netmod", "ofi"). +node("libfabric") :- depends_on("mpich", "libfabric"), node("mpich"), variant_value("mpich", "device", "ch3"), variant_value("mpich", "netmod", "ofi"). +1 { version("libfabric", "1.4.2"); version("libfabric", "1.5.0"); version("libfabric", "1.5.3"); version("libfabric", "1.6.0"); version("libfabric", "1.6.1"); version("libfabric", "1.6.2") } 1 :- depends_on("mpich", "libfabric"), node("mpich"), variant_value("mpich", "device", "ch3"), variant_value("mpich", "netmod", "ofi"). +declared_dependency("mpich", "libfabric", "build") :- node("mpich"), variant_value("mpich", "netmod", "ofi"). +declared_dependency("mpich", "libfabric", "link") :- node("mpich"), variant_value("mpich", "netmod", "ofi"). +node("libfabric") :- depends_on("mpich", "libfabric"), node("mpich"), variant_value("mpich", "netmod", "ofi"). + +declared_dependency("mpich", "libpciaccess", "build") :- node("mpich"), variant_value("mpich", "pci", "True"). +declared_dependency("mpich", "libpciaccess", "link") :- node("mpich"), variant_value("mpich", "pci", "True"). +node("libpciaccess") :- depends_on("mpich", "libpciaccess"), node("mpich"), variant_value("mpich", "pci", "True"). + +declared_dependency("mpich", "libtool", "build") :- node("mpich"), 1 { version("mpich", "develop") } 1. +node("libtool") :- depends_on("mpich", "libtool"), node("mpich"), 1 { version("mpich", "develop") } 1. +1 { version("libtool", "2.4.6"); version("libtool", "develop") } 1 :- depends_on("mpich", "libtool"), node("mpich"), 1 { version("mpich", "develop") } 1. + +declared_dependency("mpich", "libxml2", "build"). +declared_dependency("mpich", "libxml2", "link"). +node("libxml2") :- depends_on("mpich", "libxml2"), node("mpich"). + +declared_dependency("mpich", "m4", "build") :- node("mpich"), 1 { version("mpich", "develop") } 1. +node("m4") :- depends_on("mpich", "m4"), node("mpich"), 1 { version("mpich", "develop") } 1. + +declared_dependency("mpich", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("mpich", "pkgconfig"), node("mpich"). + +declared_dependency("mpich", "pmix", "build") :- node("mpich"), variant_value("mpich", "pmi", "pmix"). +declared_dependency("mpich", "pmix", "link") :- node("mpich"), variant_value("mpich", "pmi", "pmix"). +node("pmix") :- depends_on("mpich", "pmix"), node("mpich"), variant_value("mpich", "pmi", "pmix"). + +declared_dependency("mpich", "slurm", "build") :- node("mpich"), variant_value("mpich", "slurm", "True"). +declared_dependency("mpich", "slurm", "link") :- node("mpich"), variant_value("mpich", "slurm", "True"). +node("slurm") :- depends_on("mpich", "slurm"), node("mpich"), variant_value("mpich", "slurm", "True"). + +declared_dependency("mpich", "ucx", "build") :- node("mpich"), variant_value("mpich", "netmod", "ucx"). +declared_dependency("mpich", "ucx", "link") :- node("mpich"), variant_value("mpich", "netmod", "ucx"). +node("ucx") :- depends_on("mpich", "ucx"), node("mpich"), variant_value("mpich", "netmod", "ucx"). + + +%---------------------------------------------------------------------------- +% Package: mpilander +%---------------------------------------------------------------------------- +version_declared("mpilander", "develop", 0). + +variant("mpilander", "build_type"). +variant_single_value("mpilander", "build_type"). +variant_default_value("mpilander", "build_type", "RelWithDebInfo"). +variant_possible_value("mpilander", "build_type", "Debug"). +variant_possible_value("mpilander", "build_type", "MinSizeRel"). +variant_possible_value("mpilander", "build_type", "RelWithDebInfo"). +variant_possible_value("mpilander", "build_type", "Release"). + +declared_dependency("mpilander", "cmake", "build"). +node("cmake") :- depends_on("mpilander", "cmake"), node("mpilander"). +1 { version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3"); version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4"); version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1 :- depends_on("mpilander", "cmake"), node("mpilander"). + + +%---------------------------------------------------------------------------- +% Package: mpt +%---------------------------------------------------------------------------- + + +%---------------------------------------------------------------------------- +% Package: msgpack-c +%---------------------------------------------------------------------------- +version_declared("msgpack-c", "3.0.1", 0). +version_declared("msgpack-c", "1.4.1", 1). + +variant("msgpack-c", "build_type"). +variant_single_value("msgpack-c", "build_type"). +variant_default_value("msgpack-c", "build_type", "RelWithDebInfo"). +variant_possible_value("msgpack-c", "build_type", "Debug"). +variant_possible_value("msgpack-c", "build_type", "MinSizeRel"). +variant_possible_value("msgpack-c", "build_type", "RelWithDebInfo"). +variant_possible_value("msgpack-c", "build_type", "Release"). + +declared_dependency("msgpack-c", "cmake", "build"). +node("cmake") :- depends_on("msgpack-c", "cmake"), node("msgpack-c"). +1 { version("cmake", "3.0.2"); version("cmake", "3.1.0"); version("cmake", "3.3.1"); version("cmake", "3.4.0"); version("cmake", "3.4.3"); version("cmake", "3.5.0"); version("cmake", "3.5.1"); version("cmake", "3.5.2"); version("cmake", "3.6.0"); version("cmake", "3.6.1"); version("cmake", "3.7.1"); version("cmake", "3.7.2"); version("cmake", "3.8.0"); version("cmake", "3.8.1"); version("cmake", "3.8.2"); version("cmake", "3.9.0"); version("cmake", "3.9.4"); version("cmake", "3.9.6"); version("cmake", "3.10.0"); version("cmake", "3.10.1"); version("cmake", "3.10.2"); version("cmake", "3.10.3"); version("cmake", "3.11.0"); version("cmake", "3.11.1"); version("cmake", "3.11.2"); version("cmake", "3.11.3"); version("cmake", "3.11.4"); version("cmake", "3.12.0"); version("cmake", "3.12.1"); version("cmake", "3.12.2"); version("cmake", "3.12.3"); version("cmake", "3.12.4"); version("cmake", "3.13.0"); version("cmake", "3.13.1"); version("cmake", "3.13.2"); version("cmake", "3.13.3"); version("cmake", "3.13.4"); version("cmake", "3.14.0"); version("cmake", "3.14.1"); version("cmake", "3.14.2"); version("cmake", "3.14.3"); version("cmake", "3.14.4"); version("cmake", "3.14.5"); version("cmake", "3.15.0"); version("cmake", "3.15.1"); version("cmake", "3.15.2"); version("cmake", "3.15.3"); version("cmake", "3.15.4"); version("cmake", "3.15.5"); version("cmake", "3.16.0"); version("cmake", "3.16.1"); version("cmake", "3.16.2") } 1 :- depends_on("msgpack-c", "cmake"), node("msgpack-c"). + +declared_dependency("msgpack-c", "googletest", "test"). +node("googletest") :- depends_on("msgpack-c", "googletest"), node("msgpack-c"). + + +%---------------------------------------------------------------------------- +% Package: munge +%---------------------------------------------------------------------------- +version_declared("munge", "0.5.13", 0). +version_declared("munge", "0.5.12", 1). +version_declared("munge", "0.5.11", 2). + +declared_dependency("munge", "libgcrypt", "build"). +declared_dependency("munge", "libgcrypt", "link"). +node("libgcrypt") :- depends_on("munge", "libgcrypt"), node("munge"). + +declared_dependency("munge", "openssl", "build"). +declared_dependency("munge", "openssl", "link"). +node("openssl") :- depends_on("munge", "openssl"), node("munge"). + + +%---------------------------------------------------------------------------- +% Package: mvapich2 +%---------------------------------------------------------------------------- +version_declared("mvapich2", "2.3.2", 0). +version_declared("mvapich2", "2.3.1", 1). +version_declared("mvapich2", "2.3rc2", 2). +version_declared("mvapich2", "2.3rc1", 3). +version_declared("mvapich2", "2.3a", 4). +version_declared("mvapich2", "2.3", 5). +version_declared("mvapich2", "2.2", 6). +version_declared("mvapich2", "2.1", 7). + +variant("mvapich2", "alloca"). +variant_single_value("mvapich2", "alloca"). +variant_default_value("mvapich2", "alloca", "False"). +variant_possible_value("mvapich2", "alloca", "False"). +variant_possible_value("mvapich2", "alloca", "True"). + +variant("mvapich2", "ch3_rank_bits"). +variant_single_value("mvapich2", "ch3_rank_bits"). +variant_default_value("mvapich2", "ch3_rank_bits", "32"). +variant_possible_value("mvapich2", "ch3_rank_bits", "16"). +variant_possible_value("mvapich2", "ch3_rank_bits", "32"). + +variant("mvapich2", "cuda"). +variant_single_value("mvapich2", "cuda"). +variant_default_value("mvapich2", "cuda", "False"). +variant_possible_value("mvapich2", "cuda", "False"). +variant_possible_value("mvapich2", "cuda", "True"). + +variant("mvapich2", "debug"). +variant_single_value("mvapich2", "debug"). +variant_default_value("mvapich2", "debug", "False"). +variant_possible_value("mvapich2", "debug", "False"). +variant_possible_value("mvapich2", "debug", "True"). + +variant("mvapich2", "fabrics"). +variant_single_value("mvapich2", "fabrics"). +variant_default_value("mvapich2", "fabrics", "mrail"). +variant_possible_value("mvapich2", "fabrics", "mrail"). +variant_possible_value("mvapich2", "fabrics", "nemesis"). +variant_possible_value("mvapich2", "fabrics", "nemesisib"). +variant_possible_value("mvapich2", "fabrics", "nemesisibtcp"). +variant_possible_value("mvapich2", "fabrics", "nemesisofi"). +variant_possible_value("mvapich2", "fabrics", "nemesistcpib"). +variant_possible_value("mvapich2", "fabrics", "psm"). +variant_possible_value("mvapich2", "fabrics", "psm2"). +variant_possible_value("mvapich2", "fabrics", "sock"). + +variant("mvapich2", "file_systems"). +not variant_single_value("mvapich2", "file_systems"). +variant_default_value("mvapich2", "file_systems", "auto"). +variant_possible_value("mvapich2", "file_systems", "auto"). +variant_possible_value("mvapich2", "file_systems", "gpfs"). +variant_possible_value("mvapich2", "file_systems", "lustre"). +variant_possible_value("mvapich2", "file_systems", "nfs"). +variant_possible_value("mvapich2", "file_systems", "ufs"). + +variant("mvapich2", "process_managers"). +not variant_single_value("mvapich2", "process_managers"). +variant_default_value("mvapich2", "process_managers", "auto"). +variant_possible_value("mvapich2", "process_managers", "auto"). +variant_possible_value("mvapich2", "process_managers", "gforker"). +variant_possible_value("mvapich2", "process_managers", "hydra"). +variant_possible_value("mvapich2", "process_managers", "remshell"). +variant_possible_value("mvapich2", "process_managers", "slurm"). + +variant("mvapich2", "regcache"). +variant_single_value("mvapich2", "regcache"). +variant_default_value("mvapich2", "regcache", "True"). +variant_possible_value("mvapich2", "regcache", "False"). +variant_possible_value("mvapich2", "regcache", "True"). + +variant("mvapich2", "threads"). +variant_single_value("mvapich2", "threads"). +variant_default_value("mvapich2", "threads", "multiple"). +variant_possible_value("mvapich2", "threads", "funneled"). +variant_possible_value("mvapich2", "threads", "multiple"). +variant_possible_value("mvapich2", "threads", "serialized"). +variant_possible_value("mvapich2", "threads", "single"). + +variant("mvapich2", "wrapperrpath"). +variant_single_value("mvapich2", "wrapperrpath"). +variant_default_value("mvapich2", "wrapperrpath", "True"). +variant_possible_value("mvapich2", "wrapperrpath", "False"). +variant_possible_value("mvapich2", "wrapperrpath", "True"). + +declared_dependency("mvapich2", "bison", "build"). +node("bison") :- depends_on("mvapich2", "bison"), node("mvapich2"). + +declared_dependency("mvapich2", "cuda", "build") :- node("mvapich2"), variant_value("mvapich2", "cuda", "True"). +declared_dependency("mvapich2", "cuda", "link") :- node("mvapich2"), variant_value("mvapich2", "cuda", "True"). +node("cuda") :- depends_on("mvapich2", "cuda"), node("mvapich2"), variant_value("mvapich2", "cuda", "True"). + +declared_dependency("mvapich2", "findutils", "build"). +node("findutils") :- depends_on("mvapich2", "findutils"), node("mvapich2"). + +declared_dependency("mvapich2", "libfabric", "build") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesisofi"). +declared_dependency("mvapich2", "libfabric", "link") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesisofi"). +node("libfabric") :- depends_on("mvapich2", "libfabric"), node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesisofi"). + +declared_dependency("mvapich2", "libxml2", "build"). +declared_dependency("mvapich2", "libxml2", "link"). +node("libxml2") :- depends_on("mvapich2", "libxml2"), node("mvapich2"). + +declared_dependency("mvapich2", "opa-psm2", "build") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "psm2"). +declared_dependency("mvapich2", "opa-psm2", "link") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "psm2"). +node("opa-psm2") :- depends_on("mvapich2", "opa-psm2"), node("mvapich2"), variant_value("mvapich2", "fabrics", "psm2"). + +declared_dependency("mvapich2", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("mvapich2", "pkgconfig"), node("mvapich2"). + +declared_dependency("mvapich2", "psm", "build") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "psm"). +declared_dependency("mvapich2", "psm", "link") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "psm"). +node("psm") :- depends_on("mvapich2", "psm"), node("mvapich2"), variant_value("mvapich2", "fabrics", "psm"). + +declared_dependency("mvapich2", "rdma-core", "build") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "mrail"). +declared_dependency("mvapich2", "rdma-core", "link") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "mrail"). +node("rdma-core") :- depends_on("mvapich2", "rdma-core"), node("mvapich2"), variant_value("mvapich2", "fabrics", "mrail"). +declared_dependency("mvapich2", "rdma-core", "build") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesisib"). +declared_dependency("mvapich2", "rdma-core", "link") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesisib"). +node("rdma-core") :- depends_on("mvapich2", "rdma-core"), node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesisib"). +declared_dependency("mvapich2", "rdma-core", "build") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesisibtcp"). +declared_dependency("mvapich2", "rdma-core", "link") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesisibtcp"). +node("rdma-core") :- depends_on("mvapich2", "rdma-core"), node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesisibtcp"). +declared_dependency("mvapich2", "rdma-core", "build") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesistcpib"). +declared_dependency("mvapich2", "rdma-core", "link") :- node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesistcpib"). +node("rdma-core") :- depends_on("mvapich2", "rdma-core"), node("mvapich2"), variant_value("mvapich2", "fabrics", "nemesistcpib"). + +declared_dependency("mvapich2", "slurm", "build") :- node("mvapich2"), variant_value("mvapich2", "process_managers", "slurm"). +declared_dependency("mvapich2", "slurm", "link") :- node("mvapich2"), variant_value("mvapich2", "process_managers", "slurm"). +node("slurm") :- depends_on("mvapich2", "slurm"), node("mvapich2"), variant_value("mvapich2", "process_managers", "slurm"). + +declared_dependency("mvapich2", "zlib", "build"). +declared_dependency("mvapich2", "zlib", "link"). +node("zlib") :- depends_on("mvapich2", "zlib"), node("mvapich2"). + + +%---------------------------------------------------------------------------- +% Package: nasm +%---------------------------------------------------------------------------- +version_declared("nasm", "2.14.02", 0). +version_declared("nasm", "2.13.03", 1). +version_declared("nasm", "2.11.06", 2). + + +%---------------------------------------------------------------------------- +% Package: ncurses +%---------------------------------------------------------------------------- +version_declared("ncurses", "6.1", 0). +version_declared("ncurses", "6.0", 1). +version_declared("ncurses", "5.9", 2). + +variant("ncurses", "symlinks"). +variant_single_value("ncurses", "symlinks"). +variant_default_value("ncurses", "symlinks", "False"). +variant_possible_value("ncurses", "symlinks", "False"). +variant_possible_value("ncurses", "symlinks", "True"). + +variant("ncurses", "termlib"). +variant_single_value("ncurses", "termlib"). +variant_default_value("ncurses", "termlib", "False"). +variant_possible_value("ncurses", "termlib", "False"). +variant_possible_value("ncurses", "termlib", "True"). + +declared_dependency("ncurses", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("ncurses", "pkgconfig"), node("ncurses"). + + +%---------------------------------------------------------------------------- +% Package: netlib-lapack +%---------------------------------------------------------------------------- +version_declared("netlib-lapack", "3.8.0", 0). +version_declared("netlib-lapack", "3.7.1", 1). +version_declared("netlib-lapack", "3.7.0", 2). +version_declared("netlib-lapack", "3.6.1", 3). +version_declared("netlib-lapack", "3.6.0", 4). +version_declared("netlib-lapack", "3.5.0", 5). +version_declared("netlib-lapack", "3.4.2", 6). +version_declared("netlib-lapack", "3.4.1", 7). +version_declared("netlib-lapack", "3.4.0", 8). +version_declared("netlib-lapack", "3.3.1", 9). + +variant("netlib-lapack", "build_type"). +variant_single_value("netlib-lapack", "build_type"). +variant_default_value("netlib-lapack", "build_type", "RelWithDebInfo"). +variant_possible_value("netlib-lapack", "build_type", "Debug"). +variant_possible_value("netlib-lapack", "build_type", "MinSizeRel"). +variant_possible_value("netlib-lapack", "build_type", "RelWithDebInfo"). +variant_possible_value("netlib-lapack", "build_type", "Release"). + +variant("netlib-lapack", "external-blas"). +variant_single_value("netlib-lapack", "external-blas"). +variant_default_value("netlib-lapack", "external-blas", "False"). +variant_possible_value("netlib-lapack", "external-blas", "False"). +variant_possible_value("netlib-lapack", "external-blas", "True"). + +variant("netlib-lapack", "lapacke"). +variant_single_value("netlib-lapack", "lapacke"). +variant_default_value("netlib-lapack", "lapacke", "True"). +variant_possible_value("netlib-lapack", "lapacke", "False"). +variant_possible_value("netlib-lapack", "lapacke", "True"). + +variant("netlib-lapack", "shared"). +variant_single_value("netlib-lapack", "shared"). +variant_default_value("netlib-lapack", "shared", "True"). +variant_possible_value("netlib-lapack", "shared", "False"). +variant_possible_value("netlib-lapack", "shared", "True"). + +variant("netlib-lapack", "xblas"). +variant_single_value("netlib-lapack", "xblas"). +variant_default_value("netlib-lapack", "xblas", "False"). +variant_possible_value("netlib-lapack", "xblas", "False"). +variant_possible_value("netlib-lapack", "xblas", "True"). + +declared_dependency("netlib-lapack", "blas", "build") :- node("netlib-lapack"), variant_value("netlib-lapack", "external-blas", "True"). +declared_dependency("netlib-lapack", "blas", "link") :- node("netlib-lapack"), variant_value("netlib-lapack", "external-blas", "True"). +node("blas") :- depends_on("netlib-lapack", "blas"), node("netlib-lapack"), variant_value("netlib-lapack", "external-blas", "True"). + +declared_dependency("netlib-lapack", "cmake", "build"). +node("cmake") :- depends_on("netlib-lapack", "cmake"), node("netlib-lapack"). + +declared_dependency("netlib-lapack", "netlib-xblas", "build") :- node("netlib-lapack"), variant_value("netlib-lapack", "xblas", "True"). +declared_dependency("netlib-lapack", "netlib-xblas", "link") :- node("netlib-lapack"), variant_value("netlib-lapack", "xblas", "True"). +node("netlib-xblas") :- depends_on("netlib-lapack", "netlib-xblas"), node("netlib-lapack"), variant_value("netlib-lapack", "xblas", "True"). +variant_set("netlib-xblas", "fortran", "True") :- depends_on("netlib-lapack", "netlib-xblas"), node("netlib-lapack"), variant_value("netlib-lapack", "xblas", "True"). +variant_set("netlib-xblas", "plain_blas", "True") :- depends_on("netlib-lapack", "netlib-xblas"), node("netlib-lapack"), variant_value("netlib-lapack", "xblas", "True"). + +declared_dependency("netlib-lapack", "python", "test"). +node("python") :- depends_on("netlib-lapack", "python"), node("netlib-lapack"). + + +%---------------------------------------------------------------------------- +% Package: netlib-xblas +%---------------------------------------------------------------------------- +version_declared("netlib-xblas", "1.0.248", 0). + +variant("netlib-xblas", "fortran"). +variant_single_value("netlib-xblas", "fortran"). +variant_default_value("netlib-xblas", "fortran", "True"). +variant_possible_value("netlib-xblas", "fortran", "False"). +variant_possible_value("netlib-xblas", "fortran", "True"). + +variant("netlib-xblas", "plain_blas"). +variant_single_value("netlib-xblas", "plain_blas"). +variant_default_value("netlib-xblas", "plain_blas", "True"). +variant_possible_value("netlib-xblas", "plain_blas", "False"). +variant_possible_value("netlib-xblas", "plain_blas", "True"). + + +%---------------------------------------------------------------------------- +% Package: nettle +%---------------------------------------------------------------------------- +version_declared("nettle", "3.4.1", 0). +version_declared("nettle", "3.4", 1). +version_declared("nettle", "3.3", 2). +version_declared("nettle", "3.2", 3). +version_declared("nettle", "2.7.1", 4). +version_declared("nettle", "2.7", 5). + +declared_dependency("nettle", "gmp", "build"). +declared_dependency("nettle", "gmp", "link"). +node("gmp") :- depends_on("nettle", "gmp"), node("nettle"). + +declared_dependency("nettle", "m4", "build"). +node("m4") :- depends_on("nettle", "m4"), node("nettle"). + + +%---------------------------------------------------------------------------- +% Package: nghttp2 +%---------------------------------------------------------------------------- +version_declared("nghttp2", "1.26.0", 0). + +declared_dependency("nghttp2", "py-cython", "build"). +declared_dependency("nghttp2", "py-cython", "run"). +node("py-cython") :- depends_on("nghttp2", "py-cython"), node("nghttp2"). + +declared_dependency("nghttp2", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("nghttp2", "py-setuptools"), node("nghttp2"). + +declared_dependency("nghttp2", "python", "build"). +declared_dependency("nghttp2", "python", "run"). +node("python") :- depends_on("nghttp2", "python"), node("nghttp2"). + + +%---------------------------------------------------------------------------- +% Package: ninja +%---------------------------------------------------------------------------- +version_declared("ninja", "1.10.0", 0). +version_declared("ninja", "1.9.0", 1). +version_declared("ninja", "1.8.2", 2). +version_declared("ninja", "1.7.2", 3). +version_declared("ninja", "1.6.0", 4). +version_declared("ninja", "kitware", 5). + +declared_dependency("ninja", "python", "build"). +node("python") :- depends_on("ninja", "python"), node("ninja"). + + +%---------------------------------------------------------------------------- +% Package: numactl +%---------------------------------------------------------------------------- +version_declared("numactl", "2.0.12", 0). +version_declared("numactl", "2.0.11", 1). + +declared_dependency("numactl", "autoconf", "build"). +node("autoconf") :- depends_on("numactl", "autoconf"), node("numactl"). + +declared_dependency("numactl", "automake", "build"). +node("automake") :- depends_on("numactl", "automake"), node("numactl"). + +declared_dependency("numactl", "libtool", "build"). +node("libtool") :- depends_on("numactl", "libtool"), node("numactl"). + +declared_dependency("numactl", "m4", "build"). +node("m4") :- depends_on("numactl", "m4"), node("numactl"). + + +%---------------------------------------------------------------------------- +% Package: opa-psm2 +%---------------------------------------------------------------------------- +version_declared("opa-psm2", "11.2.77", 0). +version_declared("opa-psm2", "11.2.68", 1). +version_declared("opa-psm2", "10.3-37", 2). +version_declared("opa-psm2", "10.3-17", 3). +version_declared("opa-psm2", "10.3-10", 4). +version_declared("opa-psm2", "10.3-8", 5). +version_declared("opa-psm2", "10.2-260", 6). +version_declared("opa-psm2", "10.2-235", 7). +version_declared("opa-psm2", "10.2-175", 8). + +variant("opa-psm2", "avx2"). +variant_single_value("opa-psm2", "avx2"). +variant_default_value("opa-psm2", "avx2", "True"). +variant_possible_value("opa-psm2", "avx2", "False"). +variant_possible_value("opa-psm2", "avx2", "True"). + +declared_dependency("opa-psm2", "numactl", "build"). +declared_dependency("opa-psm2", "numactl", "link"). +node("numactl") :- depends_on("opa-psm2", "numactl"), node("opa-psm2"). + + +%---------------------------------------------------------------------------- +% Package: openblas +%---------------------------------------------------------------------------- +version_declared("openblas", "0.3.8", 0). +version_declared("openblas", "0.3.7", 1). +version_declared("openblas", "0.3.6", 2). +version_declared("openblas", "0.3.5", 3). +version_declared("openblas", "0.3.4", 4). +version_declared("openblas", "0.3.3", 5). +version_declared("openblas", "0.3.2", 6). +version_declared("openblas", "0.3.1", 7). +version_declared("openblas", "0.3.0", 8). +version_declared("openblas", "0.2.20", 9). +version_declared("openblas", "0.2.19", 10). +version_declared("openblas", "0.2.18", 11). +version_declared("openblas", "0.2.17", 12). +version_declared("openblas", "0.2.16", 13). +version_declared("openblas", "0.2.15", 14). +version_declared("openblas", "develop", 15). + +variant("openblas", "ilp64"). +variant_single_value("openblas", "ilp64"). +variant_default_value("openblas", "ilp64", "False"). +variant_possible_value("openblas", "ilp64", "False"). +variant_possible_value("openblas", "ilp64", "True"). + +variant("openblas", "pic"). +variant_single_value("openblas", "pic"). +variant_default_value("openblas", "pic", "True"). +variant_possible_value("openblas", "pic", "False"). +variant_possible_value("openblas", "pic", "True"). + +variant("openblas", "shared"). +variant_single_value("openblas", "shared"). +variant_default_value("openblas", "shared", "True"). +variant_possible_value("openblas", "shared", "False"). +variant_possible_value("openblas", "shared", "True"). + +variant("openblas", "threads"). +variant_single_value("openblas", "threads"). +variant_default_value("openblas", "threads", "none"). +variant_possible_value("openblas", "threads", "none"). +variant_possible_value("openblas", "threads", "openmp"). +variant_possible_value("openblas", "threads", "pthreads"). + + +%---------------------------------------------------------------------------- +% Package: opengl +%---------------------------------------------------------------------------- + + +%---------------------------------------------------------------------------- +% Package: openjdk +%---------------------------------------------------------------------------- +version_declared("openjdk", "11.0.2", 0). +version_declared("openjdk", "11.0.1", 1). +version_declared("openjdk", "1.8.0_202-b08", 2). +version_declared("openjdk", "1.8.0_40-b25", 3). + + +%---------------------------------------------------------------------------- +% Package: openmpi +%---------------------------------------------------------------------------- +version_declared("openmpi", "3.1.5", 0). +version_declared("openmpi", "4.0.2", 1). +version_declared("openmpi", "4.0.1", 2). +version_declared("openmpi", "4.0.0", 3). +version_declared("openmpi", "3.1.4", 4). +version_declared("openmpi", "3.1.3", 5). +version_declared("openmpi", "3.1.2", 6). +version_declared("openmpi", "3.1.1", 7). +version_declared("openmpi", "3.1.0", 8). +version_declared("openmpi", "3.0.5", 9). +version_declared("openmpi", "3.0.4", 10). +version_declared("openmpi", "3.0.3", 11). +version_declared("openmpi", "3.0.2", 12). +version_declared("openmpi", "3.0.1", 13). +version_declared("openmpi", "3.0.0", 14). +version_declared("openmpi", "2.1.6", 15). +version_declared("openmpi", "2.1.5", 16). +version_declared("openmpi", "2.1.4", 17). +version_declared("openmpi", "2.1.3", 18). +version_declared("openmpi", "2.1.2", 19). +version_declared("openmpi", "2.1.1", 20). +version_declared("openmpi", "2.1.0", 21). +version_declared("openmpi", "2.0.4", 22). +version_declared("openmpi", "2.0.3", 23). +version_declared("openmpi", "2.0.2", 24). +version_declared("openmpi", "2.0.1", 25). +version_declared("openmpi", "2.0.0", 26). +version_declared("openmpi", "1.10.7", 27). +version_declared("openmpi", "1.10.6", 28). +version_declared("openmpi", "1.10.5", 29). +version_declared("openmpi", "1.10.4", 30). +version_declared("openmpi", "1.10.3", 31). +version_declared("openmpi", "1.10.2", 32). +version_declared("openmpi", "1.10.1", 33). +version_declared("openmpi", "1.10.0", 34). +version_declared("openmpi", "1.8.8", 35). +version_declared("openmpi", "1.8.7", 36). +version_declared("openmpi", "1.8.6", 37). +version_declared("openmpi", "1.8.5", 38). +version_declared("openmpi", "1.8.4", 39). +version_declared("openmpi", "1.8.3", 40). +version_declared("openmpi", "1.8.2", 41). +version_declared("openmpi", "1.8.1", 42). +version_declared("openmpi", "1.8", 43). +version_declared("openmpi", "1.7.5", 44). +version_declared("openmpi", "1.7.4", 45). +version_declared("openmpi", "1.7.3", 46). +version_declared("openmpi", "1.7.2", 47). +version_declared("openmpi", "1.7.1", 48). +version_declared("openmpi", "1.7", 49). +version_declared("openmpi", "1.6.5", 50). +version_declared("openmpi", "1.6.4", 51). +version_declared("openmpi", "1.6.3", 52). +version_declared("openmpi", "1.6.2", 53). +version_declared("openmpi", "1.6.1", 54). +version_declared("openmpi", "1.6", 55). +version_declared("openmpi", "1.5.5", 56). +version_declared("openmpi", "1.5.4", 57). +version_declared("openmpi", "1.5.3", 58). +version_declared("openmpi", "1.5.2", 59). +version_declared("openmpi", "1.5.1", 60). +version_declared("openmpi", "1.5", 61). +version_declared("openmpi", "1.4.5", 62). +version_declared("openmpi", "1.4.4", 63). +version_declared("openmpi", "1.4.3", 64). +version_declared("openmpi", "1.4.2", 65). +version_declared("openmpi", "1.4.1", 66). +version_declared("openmpi", "1.4", 67). +version_declared("openmpi", "1.3.4", 68). +version_declared("openmpi", "1.3.3", 69). +version_declared("openmpi", "1.3.2", 70). +version_declared("openmpi", "1.3.1", 71). +version_declared("openmpi", "1.3", 72). +version_declared("openmpi", "1.2.9", 73). +version_declared("openmpi", "1.2.8", 74). +version_declared("openmpi", "1.2.7", 75). +version_declared("openmpi", "1.2.6", 76). +version_declared("openmpi", "1.2.5", 77). +version_declared("openmpi", "1.2.4", 78). +version_declared("openmpi", "1.2.3", 79). +version_declared("openmpi", "1.2.2", 80). +version_declared("openmpi", "1.2.1", 81). +version_declared("openmpi", "1.2", 82). +version_declared("openmpi", "1.1.5", 83). +version_declared("openmpi", "1.1.4", 84). +version_declared("openmpi", "1.1.3", 85). +version_declared("openmpi", "1.1.2", 86). +version_declared("openmpi", "1.1.1", 87). +version_declared("openmpi", "1.1", 88). +version_declared("openmpi", "1.0.2", 89). +version_declared("openmpi", "1.0.1", 90). +version_declared("openmpi", "1.0", 91). +version_declared("openmpi", "develop", 92). + +variant("openmpi", "cuda"). +variant_single_value("openmpi", "cuda"). +variant_default_value("openmpi", "cuda", "False"). +variant_possible_value("openmpi", "cuda", "False"). +variant_possible_value("openmpi", "cuda", "True"). + +variant("openmpi", "cxx_exceptions"). +variant_single_value("openmpi", "cxx_exceptions"). +variant_default_value("openmpi", "cxx_exceptions", "True"). +variant_possible_value("openmpi", "cxx_exceptions", "False"). +variant_possible_value("openmpi", "cxx_exceptions", "True"). + +variant("openmpi", "fabrics"). +not variant_single_value("openmpi", "fabrics"). +variant_default_value("openmpi", "fabrics", "none"). +variant_possible_value("openmpi", "fabrics", "auto"). +variant_possible_value("openmpi", "fabrics", "libfabric"). +variant_possible_value("openmpi", "fabrics", "mxm"). +variant_possible_value("openmpi", "fabrics", "none"). +variant_possible_value("openmpi", "fabrics", "psm"). +variant_possible_value("openmpi", "fabrics", "psm2"). +variant_possible_value("openmpi", "fabrics", "ucx"). +variant_possible_value("openmpi", "fabrics", "verbs"). + +variant("openmpi", "java"). +variant_single_value("openmpi", "java"). +variant_default_value("openmpi", "java", "False"). +variant_possible_value("openmpi", "java", "False"). +variant_possible_value("openmpi", "java", "True"). + +variant("openmpi", "legacylaunchers"). +variant_single_value("openmpi", "legacylaunchers"). +variant_default_value("openmpi", "legacylaunchers", "False"). +variant_possible_value("openmpi", "legacylaunchers", "False"). +variant_possible_value("openmpi", "legacylaunchers", "True"). + +variant("openmpi", "memchecker"). +variant_single_value("openmpi", "memchecker"). +variant_default_value("openmpi", "memchecker", "False"). +variant_possible_value("openmpi", "memchecker", "False"). +variant_possible_value("openmpi", "memchecker", "True"). + +variant("openmpi", "pmi"). +variant_single_value("openmpi", "pmi"). +variant_default_value("openmpi", "pmi", "False"). +variant_possible_value("openmpi", "pmi", "False"). +variant_possible_value("openmpi", "pmi", "True"). + +variant("openmpi", "schedulers"). +not variant_single_value("openmpi", "schedulers"). +variant_default_value("openmpi", "schedulers", "none"). +variant_possible_value("openmpi", "schedulers", "alps"). +variant_possible_value("openmpi", "schedulers", "auto"). +variant_possible_value("openmpi", "schedulers", "loadleveler"). +variant_possible_value("openmpi", "schedulers", "lsf"). +variant_possible_value("openmpi", "schedulers", "none"). +variant_possible_value("openmpi", "schedulers", "sge"). +variant_possible_value("openmpi", "schedulers", "slurm"). +variant_possible_value("openmpi", "schedulers", "tm"). + +variant("openmpi", "sqlite3"). +variant_single_value("openmpi", "sqlite3"). +variant_default_value("openmpi", "sqlite3", "False"). +variant_possible_value("openmpi", "sqlite3", "False"). +variant_possible_value("openmpi", "sqlite3", "True"). + +variant("openmpi", "thread_multiple"). +variant_single_value("openmpi", "thread_multiple"). +variant_default_value("openmpi", "thread_multiple", "False"). +variant_possible_value("openmpi", "thread_multiple", "False"). +variant_possible_value("openmpi", "thread_multiple", "True"). + +variant("openmpi", "vt"). +variant_single_value("openmpi", "vt"). +variant_default_value("openmpi", "vt", "True"). +variant_possible_value("openmpi", "vt", "False"). +variant_possible_value("openmpi", "vt", "True"). + +declared_dependency("openmpi", "autoconf", "build") :- node("openmpi"), 1 { version("openmpi", "develop") } 1. +node("autoconf") :- depends_on("openmpi", "autoconf"), node("openmpi"), 1 { version("openmpi", "develop") } 1. + +declared_dependency("openmpi", "automake", "build") :- node("openmpi"), 1 { version("openmpi", "develop") } 1. +node("automake") :- depends_on("openmpi", "automake"), node("openmpi"), 1 { version("openmpi", "develop") } 1. + +declared_dependency("openmpi", "binutils", "build") :- node("openmpi"), variant_value("openmpi", "fabrics", "mxm"). +declared_dependency("openmpi", "binutils", "link") :- node("openmpi"), variant_value("openmpi", "fabrics", "mxm"). +node("binutils") :- depends_on("openmpi", "binutils"), node("openmpi"), variant_value("openmpi", "fabrics", "mxm"). +variant_set("binutils", "libiberty", "True") :- depends_on("openmpi", "binutils"), node("openmpi"), variant_value("openmpi", "fabrics", "mxm"). + +declared_dependency("openmpi", "hwloc", "build"). +declared_dependency("openmpi", "hwloc", "link"). +node("hwloc") :- depends_on("openmpi", "hwloc"), node("openmpi"). +1 { version("hwloc", "1.9"); version("hwloc", "1.11.1"); version("hwloc", "1.11.2"); version("hwloc", "1.11.3"); version("hwloc", "1.11.4"); version("hwloc", "1.11.5"); version("hwloc", "1.11.6"); version("hwloc", "1.11.7"); version("hwloc", "1.11.8"); version("hwloc", "1.11.9"); version("hwloc", "1.11.10"); version("hwloc", "1.11.11") } 1 :- depends_on("openmpi", "hwloc"), node("openmpi"). +declared_dependency("openmpi", "hwloc", "build") :- node("openmpi"), variant_value("openmpi", "cuda", "True"). +declared_dependency("openmpi", "hwloc", "link") :- node("openmpi"), variant_value("openmpi", "cuda", "True"). +node("hwloc") :- depends_on("openmpi", "hwloc"), node("openmpi"), variant_value("openmpi", "cuda", "True"). +variant_set("hwloc", "cuda", "True") :- depends_on("openmpi", "hwloc"), node("openmpi"), variant_value("openmpi", "cuda", "True"). + +declared_dependency("openmpi", "java", "build") :- node("openmpi"), variant_value("openmpi", "java", "True"). +declared_dependency("openmpi", "java", "link") :- node("openmpi"), variant_value("openmpi", "java", "True"). +node("java") :- depends_on("openmpi", "java"), node("openmpi"), variant_value("openmpi", "java", "True"). + +declared_dependency("openmpi", "libfabric", "build") :- node("openmpi"), variant_value("openmpi", "fabrics", "libfabric"). +declared_dependency("openmpi", "libfabric", "link") :- node("openmpi"), variant_value("openmpi", "fabrics", "libfabric"). +node("libfabric") :- depends_on("openmpi", "libfabric"), node("openmpi"), variant_value("openmpi", "fabrics", "libfabric"). + +declared_dependency("openmpi", "libtool", "build") :- node("openmpi"), 1 { version("openmpi", "develop") } 1. +node("libtool") :- depends_on("openmpi", "libtool"), node("openmpi"), 1 { version("openmpi", "develop") } 1. + +declared_dependency("openmpi", "lsf", "build") :- node("openmpi"), variant_value("openmpi", "schedulers", "lsf"). +declared_dependency("openmpi", "lsf", "link") :- node("openmpi"), variant_value("openmpi", "schedulers", "lsf"). +node("lsf") :- depends_on("openmpi", "lsf"), node("openmpi"), variant_value("openmpi", "schedulers", "lsf"). + +declared_dependency("openmpi", "m4", "build") :- node("openmpi"), 1 { version("openmpi", "develop") } 1. +node("m4") :- depends_on("openmpi", "m4"), node("openmpi"), 1 { version("openmpi", "develop") } 1. + +declared_dependency("openmpi", "perl", "build") :- node("openmpi"), 1 { version("openmpi", "develop") } 1. +node("perl") :- depends_on("openmpi", "perl"), node("openmpi"), 1 { version("openmpi", "develop") } 1. + +declared_dependency("openmpi", "slurm", "build") :- node("openmpi"), variant_value("openmpi", "schedulers", "slurm"). +declared_dependency("openmpi", "slurm", "link") :- node("openmpi"), variant_value("openmpi", "schedulers", "slurm"). +node("slurm") :- depends_on("openmpi", "slurm"), node("openmpi"), variant_value("openmpi", "schedulers", "slurm"). + +declared_dependency("openmpi", "sqlite", "build") :- node("openmpi"), 1 { version("openmpi", "1.0"); version("openmpi", "1.0.1"); version("openmpi", "1.0.2"); version("openmpi", "1.1"); version("openmpi", "1.1.1"); version("openmpi", "1.1.2"); version("openmpi", "1.1.3"); version("openmpi", "1.1.4"); version("openmpi", "1.1.5"); version("openmpi", "1.2"); version("openmpi", "1.2.1"); version("openmpi", "1.2.2"); version("openmpi", "1.2.3"); version("openmpi", "1.2.4"); version("openmpi", "1.2.5"); version("openmpi", "1.2.6"); version("openmpi", "1.2.7"); version("openmpi", "1.2.8"); version("openmpi", "1.2.9"); version("openmpi", "1.3"); version("openmpi", "1.3.1"); version("openmpi", "1.3.2"); version("openmpi", "1.3.3"); version("openmpi", "1.3.4"); version("openmpi", "1.4"); version("openmpi", "1.4.1"); version("openmpi", "1.4.2"); version("openmpi", "1.4.3"); version("openmpi", "1.4.4"); version("openmpi", "1.4.5"); version("openmpi", "1.5"); version("openmpi", "1.5.1"); version("openmpi", "1.5.2"); version("openmpi", "1.5.3"); version("openmpi", "1.5.4"); version("openmpi", "1.5.5"); version("openmpi", "1.6"); version("openmpi", "1.6.1"); version("openmpi", "1.6.2"); version("openmpi", "1.6.3"); version("openmpi", "1.6.4"); version("openmpi", "1.6.5"); version("openmpi", "1.7"); version("openmpi", "1.7.1"); version("openmpi", "1.7.2"); version("openmpi", "1.7.3"); version("openmpi", "1.7.4"); version("openmpi", "1.7.5"); version("openmpi", "1.8"); version("openmpi", "1.8.1"); version("openmpi", "1.8.2"); version("openmpi", "1.8.3"); version("openmpi", "1.8.4"); version("openmpi", "1.8.5"); version("openmpi", "1.8.6"); version("openmpi", "1.8.7"); version("openmpi", "1.8.8"); version("openmpi", "1.10.0"); version("openmpi", "1.10.1"); version("openmpi", "1.10.2"); version("openmpi", "1.10.3"); version("openmpi", "1.10.4"); version("openmpi", "1.10.5"); version("openmpi", "1.10.6"); version("openmpi", "1.10.7") } 1, variant_value("openmpi", "sqlite3", "True"). +declared_dependency("openmpi", "sqlite", "link") :- node("openmpi"), 1 { version("openmpi", "1.0"); version("openmpi", "1.0.1"); version("openmpi", "1.0.2"); version("openmpi", "1.1"); version("openmpi", "1.1.1"); version("openmpi", "1.1.2"); version("openmpi", "1.1.3"); version("openmpi", "1.1.4"); version("openmpi", "1.1.5"); version("openmpi", "1.2"); version("openmpi", "1.2.1"); version("openmpi", "1.2.2"); version("openmpi", "1.2.3"); version("openmpi", "1.2.4"); version("openmpi", "1.2.5"); version("openmpi", "1.2.6"); version("openmpi", "1.2.7"); version("openmpi", "1.2.8"); version("openmpi", "1.2.9"); version("openmpi", "1.3"); version("openmpi", "1.3.1"); version("openmpi", "1.3.2"); version("openmpi", "1.3.3"); version("openmpi", "1.3.4"); version("openmpi", "1.4"); version("openmpi", "1.4.1"); version("openmpi", "1.4.2"); version("openmpi", "1.4.3"); version("openmpi", "1.4.4"); version("openmpi", "1.4.5"); version("openmpi", "1.5"); version("openmpi", "1.5.1"); version("openmpi", "1.5.2"); version("openmpi", "1.5.3"); version("openmpi", "1.5.4"); version("openmpi", "1.5.5"); version("openmpi", "1.6"); version("openmpi", "1.6.1"); version("openmpi", "1.6.2"); version("openmpi", "1.6.3"); version("openmpi", "1.6.4"); version("openmpi", "1.6.5"); version("openmpi", "1.7"); version("openmpi", "1.7.1"); version("openmpi", "1.7.2"); version("openmpi", "1.7.3"); version("openmpi", "1.7.4"); version("openmpi", "1.7.5"); version("openmpi", "1.8"); version("openmpi", "1.8.1"); version("openmpi", "1.8.2"); version("openmpi", "1.8.3"); version("openmpi", "1.8.4"); version("openmpi", "1.8.5"); version("openmpi", "1.8.6"); version("openmpi", "1.8.7"); version("openmpi", "1.8.8"); version("openmpi", "1.10.0"); version("openmpi", "1.10.1"); version("openmpi", "1.10.2"); version("openmpi", "1.10.3"); version("openmpi", "1.10.4"); version("openmpi", "1.10.5"); version("openmpi", "1.10.6"); version("openmpi", "1.10.7") } 1, variant_value("openmpi", "sqlite3", "True"). +node("sqlite") :- depends_on("openmpi", "sqlite"), node("openmpi"), 1 { version("openmpi", "1.0"); version("openmpi", "1.0.1"); version("openmpi", "1.0.2"); version("openmpi", "1.1"); version("openmpi", "1.1.1"); version("openmpi", "1.1.2"); version("openmpi", "1.1.3"); version("openmpi", "1.1.4"); version("openmpi", "1.1.5"); version("openmpi", "1.2"); version("openmpi", "1.2.1"); version("openmpi", "1.2.2"); version("openmpi", "1.2.3"); version("openmpi", "1.2.4"); version("openmpi", "1.2.5"); version("openmpi", "1.2.6"); version("openmpi", "1.2.7"); version("openmpi", "1.2.8"); version("openmpi", "1.2.9"); version("openmpi", "1.3"); version("openmpi", "1.3.1"); version("openmpi", "1.3.2"); version("openmpi", "1.3.3"); version("openmpi", "1.3.4"); version("openmpi", "1.4"); version("openmpi", "1.4.1"); version("openmpi", "1.4.2"); version("openmpi", "1.4.3"); version("openmpi", "1.4.4"); version("openmpi", "1.4.5"); version("openmpi", "1.5"); version("openmpi", "1.5.1"); version("openmpi", "1.5.2"); version("openmpi", "1.5.3"); version("openmpi", "1.5.4"); version("openmpi", "1.5.5"); version("openmpi", "1.6"); version("openmpi", "1.6.1"); version("openmpi", "1.6.2"); version("openmpi", "1.6.3"); version("openmpi", "1.6.4"); version("openmpi", "1.6.5"); version("openmpi", "1.7"); version("openmpi", "1.7.1"); version("openmpi", "1.7.2"); version("openmpi", "1.7.3"); version("openmpi", "1.7.4"); version("openmpi", "1.7.5"); version("openmpi", "1.8"); version("openmpi", "1.8.1"); version("openmpi", "1.8.2"); version("openmpi", "1.8.3"); version("openmpi", "1.8.4"); version("openmpi", "1.8.5"); version("openmpi", "1.8.6"); version("openmpi", "1.8.7"); version("openmpi", "1.8.8"); version("openmpi", "1.10.0"); version("openmpi", "1.10.1"); version("openmpi", "1.10.2"); version("openmpi", "1.10.3"); version("openmpi", "1.10.4"); version("openmpi", "1.10.5"); version("openmpi", "1.10.6"); version("openmpi", "1.10.7") } 1, variant_value("openmpi", "sqlite3", "True"). + +declared_dependency("openmpi", "ucx", "build") :- node("openmpi"), variant_value("openmpi", "fabrics", "ucx"). +declared_dependency("openmpi", "ucx", "link") :- node("openmpi"), variant_value("openmpi", "fabrics", "ucx"). +node("ucx") :- depends_on("openmpi", "ucx"), node("openmpi"), variant_value("openmpi", "fabrics", "ucx"). +declared_dependency("openmpi", "ucx", "build") :- node("openmpi"), variant_value("openmpi", "fabrics", "ucx"), variant_value("openmpi", "thread_multiple", "True"). +declared_dependency("openmpi", "ucx", "link") :- node("openmpi"), variant_value("openmpi", "fabrics", "ucx"), variant_value("openmpi", "thread_multiple", "True"). +node("ucx") :- depends_on("openmpi", "ucx"), node("openmpi"), variant_value("openmpi", "fabrics", "ucx"), variant_value("openmpi", "thread_multiple", "True"). +variant_set("ucx", "thread_multiple", "True") :- depends_on("openmpi", "ucx"), node("openmpi"), variant_value("openmpi", "fabrics", "ucx"), variant_value("openmpi", "thread_multiple", "True"). +declared_dependency("openmpi", "ucx", "build") :- node("openmpi"), 1 { version("openmpi", "3.0.0"); version("openmpi", "3.0.1"); version("openmpi", "3.0.2"); version("openmpi", "3.0.3"); version("openmpi", "3.0.4"); version("openmpi", "3.0.5"); version("openmpi", "3.1.0"); version("openmpi", "3.1.1"); version("openmpi", "3.1.2"); version("openmpi", "3.1.3"); version("openmpi", "3.1.4"); version("openmpi", "3.1.5"); version("openmpi", "4.0.0"); version("openmpi", "4.0.1"); version("openmpi", "4.0.2"); version("openmpi", "develop") } 1, variant_value("openmpi", "fabrics", "ucx"). +declared_dependency("openmpi", "ucx", "link") :- node("openmpi"), 1 { version("openmpi", "3.0.0"); version("openmpi", "3.0.1"); version("openmpi", "3.0.2"); version("openmpi", "3.0.3"); version("openmpi", "3.0.4"); version("openmpi", "3.0.5"); version("openmpi", "3.1.0"); version("openmpi", "3.1.1"); version("openmpi", "3.1.2"); version("openmpi", "3.1.3"); version("openmpi", "3.1.4"); version("openmpi", "3.1.5"); version("openmpi", "4.0.0"); version("openmpi", "4.0.1"); version("openmpi", "4.0.2"); version("openmpi", "develop") } 1, variant_value("openmpi", "fabrics", "ucx"). +node("ucx") :- depends_on("openmpi", "ucx"), node("openmpi"), 1 { version("openmpi", "3.0.0"); version("openmpi", "3.0.1"); version("openmpi", "3.0.2"); version("openmpi", "3.0.3"); version("openmpi", "3.0.4"); version("openmpi", "3.0.5"); version("openmpi", "3.1.0"); version("openmpi", "3.1.1"); version("openmpi", "3.1.2"); version("openmpi", "3.1.3"); version("openmpi", "3.1.4"); version("openmpi", "3.1.5"); version("openmpi", "4.0.0"); version("openmpi", "4.0.1"); version("openmpi", "4.0.2"); version("openmpi", "develop") } 1, variant_value("openmpi", "fabrics", "ucx"). +variant_set("ucx", "thread_multiple", "True") :- depends_on("openmpi", "ucx"), node("openmpi"), 1 { version("openmpi", "3.0.0"); version("openmpi", "3.0.1"); version("openmpi", "3.0.2"); version("openmpi", "3.0.3"); version("openmpi", "3.0.4"); version("openmpi", "3.0.5"); version("openmpi", "3.1.0"); version("openmpi", "3.1.1"); version("openmpi", "3.1.2"); version("openmpi", "3.1.3"); version("openmpi", "3.1.4"); version("openmpi", "3.1.5"); version("openmpi", "4.0.0"); version("openmpi", "4.0.1"); version("openmpi", "4.0.2"); version("openmpi", "develop") } 1, variant_value("openmpi", "fabrics", "ucx"). + +declared_dependency("openmpi", "valgrind", "build") :- node("openmpi"), variant_value("openmpi", "memchecker", "True"). +declared_dependency("openmpi", "valgrind", "link") :- node("openmpi"), variant_value("openmpi", "memchecker", "True"). +node("valgrind") :- depends_on("openmpi", "valgrind"), node("openmpi"), variant_value("openmpi", "memchecker", "True"). +variant_set("valgrind", "mpi", "False") :- depends_on("openmpi", "valgrind"), node("openmpi"), variant_value("openmpi", "memchecker", "True"). + +declared_dependency("openmpi", "zlib", "build") :- node("openmpi"), 1 { version("openmpi", "3.0.0"); version("openmpi", "3.0.1"); version("openmpi", "3.0.2"); version("openmpi", "3.0.3"); version("openmpi", "3.0.4"); version("openmpi", "3.0.5"); version("openmpi", "3.1.0"); version("openmpi", "3.1.1"); version("openmpi", "3.1.2"); version("openmpi", "3.1.3"); version("openmpi", "3.1.4"); version("openmpi", "3.1.5"); version("openmpi", "4.0.0"); version("openmpi", "4.0.1"); version("openmpi", "4.0.2"); version("openmpi", "develop") } 1. +declared_dependency("openmpi", "zlib", "link") :- node("openmpi"), 1 { version("openmpi", "3.0.0"); version("openmpi", "3.0.1"); version("openmpi", "3.0.2"); version("openmpi", "3.0.3"); version("openmpi", "3.0.4"); version("openmpi", "3.0.5"); version("openmpi", "3.1.0"); version("openmpi", "3.1.1"); version("openmpi", "3.1.2"); version("openmpi", "3.1.3"); version("openmpi", "3.1.4"); version("openmpi", "3.1.5"); version("openmpi", "4.0.0"); version("openmpi", "4.0.1"); version("openmpi", "4.0.2"); version("openmpi", "develop") } 1. +node("zlib") :- depends_on("openmpi", "zlib"), node("openmpi"), 1 { version("openmpi", "3.0.0"); version("openmpi", "3.0.1"); version("openmpi", "3.0.2"); version("openmpi", "3.0.3"); version("openmpi", "3.0.4"); version("openmpi", "3.0.5"); version("openmpi", "3.1.0"); version("openmpi", "3.1.1"); version("openmpi", "3.1.2"); version("openmpi", "3.1.3"); version("openmpi", "3.1.4"); version("openmpi", "3.1.5"); version("openmpi", "4.0.0"); version("openmpi", "4.0.1"); version("openmpi", "4.0.2"); version("openmpi", "develop") } 1. + + +%---------------------------------------------------------------------------- +% Package: openssl +%---------------------------------------------------------------------------- +version_declared("openssl", "1.1.1d", 0). +version_declared("openssl", "1.1.1c", 1). +version_declared("openssl", "1.1.1b", 2). +version_declared("openssl", "1.1.1a", 3). +version_declared("openssl", "1.1.1", 4). +version_declared("openssl", "1.1.0l", 5). +version_declared("openssl", "1.1.0k", 6). +version_declared("openssl", "1.1.0j", 7). +version_declared("openssl", "1.1.0i", 8). +version_declared("openssl", "1.1.0g", 9). +version_declared("openssl", "1.1.0e", 10). +version_declared("openssl", "1.1.0d", 11). +version_declared("openssl", "1.1.0c", 12). +version_declared("openssl", "1.0.2t", 13). +version_declared("openssl", "1.0.2s", 14). +version_declared("openssl", "1.0.2r", 15). +version_declared("openssl", "1.0.2p", 16). +version_declared("openssl", "1.0.2o", 17). +version_declared("openssl", "1.0.2n", 18). +version_declared("openssl", "1.0.2m", 19). +version_declared("openssl", "1.0.2k", 20). +version_declared("openssl", "1.0.2j", 21). +version_declared("openssl", "1.0.2i", 22). +version_declared("openssl", "1.0.2h", 23). +version_declared("openssl", "1.0.2g", 24). +version_declared("openssl", "1.0.2f", 25). +version_declared("openssl", "1.0.2e", 26). +version_declared("openssl", "1.0.2d", 27). +version_declared("openssl", "1.0.1u", 28). +version_declared("openssl", "1.0.1t", 29). +version_declared("openssl", "1.0.1r", 30). +version_declared("openssl", "1.0.1h", 31). +version_declared("openssl", "1.0.1e", 32). + +variant("openssl", "systemcerts"). +variant_single_value("openssl", "systemcerts"). +variant_default_value("openssl", "systemcerts", "True"). +variant_possible_value("openssl", "systemcerts", "False"). +variant_possible_value("openssl", "systemcerts", "True"). + +declared_dependency("openssl", "perl", "build"). +declared_dependency("openssl", "perl", "test"). +node("perl") :- depends_on("openssl", "perl"), node("openssl"). + +declared_dependency("openssl", "zlib", "build"). +declared_dependency("openssl", "zlib", "link"). +node("zlib") :- depends_on("openssl", "zlib"), node("openssl"). + + +%---------------------------------------------------------------------------- +% Package: pango +%---------------------------------------------------------------------------- +version_declared("pango", "1.41.0", 0). +version_declared("pango", "1.40.3", 1). +version_declared("pango", "1.40.1", 2). +version_declared("pango", "1.36.8", 3). + +variant("pango", "X"). +variant_single_value("pango", "X"). +variant_default_value("pango", "X", "False"). +variant_possible_value("pango", "X", "False"). +variant_possible_value("pango", "X", "True"). + +declared_dependency("pango", "cairo", "build"). +declared_dependency("pango", "cairo", "link"). +node("cairo") :- depends_on("pango", "cairo"), node("pango"). +variant_set("cairo", "fc", "True") :- depends_on("pango", "cairo"), node("pango"). +variant_set("cairo", "ft", "True") :- depends_on("pango", "cairo"), node("pango"). +declared_dependency("pango", "cairo", "build") :- node("pango"), variant_value("pango", "X", "False"). +declared_dependency("pango", "cairo", "link") :- node("pango"), variant_value("pango", "X", "False"). +node("cairo") :- depends_on("pango", "cairo"), node("pango"), variant_value("pango", "X", "False"). +variant_set("cairo", "X", "False") :- depends_on("pango", "cairo"), node("pango"), variant_value("pango", "X", "False"). +declared_dependency("pango", "cairo", "build") :- node("pango"), variant_value("pango", "X", "True"). +declared_dependency("pango", "cairo", "link") :- node("pango"), variant_value("pango", "X", "True"). +node("cairo") :- depends_on("pango", "cairo"), node("pango"), variant_value("pango", "X", "True"). +variant_set("cairo", "X", "True") :- depends_on("pango", "cairo"), node("pango"), variant_value("pango", "X", "True"). + +declared_dependency("pango", "glib", "build"). +declared_dependency("pango", "glib", "link"). +node("glib") :- depends_on("pango", "glib"), node("pango"). + +declared_dependency("pango", "gobject-introspection", "build"). +declared_dependency("pango", "gobject-introspection", "link"). +node("gobject-introspection") :- depends_on("pango", "gobject-introspection"), node("pango"). + +declared_dependency("pango", "harfbuzz", "build"). +declared_dependency("pango", "harfbuzz", "link"). +node("harfbuzz") :- depends_on("pango", "harfbuzz"), node("pango"). + +declared_dependency("pango", "libxft", "build") :- node("pango"), variant_value("pango", "X", "True"). +declared_dependency("pango", "libxft", "link") :- node("pango"), variant_value("pango", "X", "True"). +node("libxft") :- depends_on("pango", "libxft"), node("pango"), variant_value("pango", "X", "True"). + +declared_dependency("pango", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("pango", "pkgconfig"), node("pango"). + + +%---------------------------------------------------------------------------- +% Package: papi +%---------------------------------------------------------------------------- +version_declared("papi", "5.7.0", 0). +version_declared("papi", "5.6.0", 1). +version_declared("papi", "5.5.1", 2). +version_declared("papi", "5.5.0", 3). +version_declared("papi", "5.4.3", 4). +version_declared("papi", "5.4.1", 5). +version_declared("papi", "5.3.0", 6). + +variant("papi", "example"). +variant_single_value("papi", "example"). +variant_default_value("papi", "example", "True"). +variant_possible_value("papi", "example", "False"). +variant_possible_value("papi", "example", "True"). + +variant("papi", "infiniband"). +variant_single_value("papi", "infiniband"). +variant_default_value("papi", "infiniband", "False"). +variant_possible_value("papi", "infiniband", "False"). +variant_possible_value("papi", "infiniband", "True"). + +variant("papi", "lmsensors"). +variant_single_value("papi", "lmsensors"). +variant_default_value("papi", "lmsensors", "False"). +variant_possible_value("papi", "lmsensors", "False"). +variant_possible_value("papi", "lmsensors", "True"). + +variant("papi", "powercap"). +variant_single_value("papi", "powercap"). +variant_default_value("papi", "powercap", "False"). +variant_possible_value("papi", "powercap", "False"). +variant_possible_value("papi", "powercap", "True"). + +variant("papi", "rapl"). +variant_single_value("papi", "rapl"). +variant_default_value("papi", "rapl", "False"). +variant_possible_value("papi", "rapl", "False"). +variant_possible_value("papi", "rapl", "True"). + +declared_dependency("papi", "lm-sensors", "build") :- node("papi"), variant_value("papi", "lmsensors", "True"). +declared_dependency("papi", "lm-sensors", "link") :- node("papi"), variant_value("papi", "lmsensors", "True"). +node("lm-sensors") :- depends_on("papi", "lm-sensors"), node("papi"), variant_value("papi", "lmsensors", "True"). + + +%---------------------------------------------------------------------------- +% Package: pcre +%---------------------------------------------------------------------------- +version_declared("pcre", "8.42", 0). +version_declared("pcre", "8.41", 1). +version_declared("pcre", "8.40", 2). +version_declared("pcre", "8.39", 3). +version_declared("pcre", "8.38", 4). + +variant("pcre", "jit"). +variant_single_value("pcre", "jit"). +variant_default_value("pcre", "jit", "False"). +variant_possible_value("pcre", "jit", "False"). +variant_possible_value("pcre", "jit", "True"). + +variant("pcre", "multibyte"). +variant_single_value("pcre", "multibyte"). +variant_default_value("pcre", "multibyte", "True"). +variant_possible_value("pcre", "multibyte", "False"). +variant_possible_value("pcre", "multibyte", "True"). + +variant("pcre", "utf"). +variant_single_value("pcre", "utf"). +variant_default_value("pcre", "utf", "True"). +variant_possible_value("pcre", "utf", "False"). +variant_possible_value("pcre", "utf", "True"). + + +%---------------------------------------------------------------------------- +% Package: pcre2 +%---------------------------------------------------------------------------- +version_declared("pcre2", "10.31", 0). +version_declared("pcre2", "10.20", 1). + +variant("pcre2", "multibyte"). +variant_single_value("pcre2", "multibyte"). +variant_default_value("pcre2", "multibyte", "True"). +variant_possible_value("pcre2", "multibyte", "False"). +variant_possible_value("pcre2", "multibyte", "True"). + + +%---------------------------------------------------------------------------- +% Package: perl +%---------------------------------------------------------------------------- +version_declared("perl", "5.30.1", 0). +version_declared("perl", "5.31.7", 1). +version_declared("perl", "5.31.4", 2). +version_declared("perl", "5.30.0", 3). +version_declared("perl", "5.28.0", 4). +version_declared("perl", "5.26.2", 5). +version_declared("perl", "5.24.1", 6). +version_declared("perl", "5.22.4", 7). +version_declared("perl", "5.22.3", 8). +version_declared("perl", "5.22.2", 9). +version_declared("perl", "5.22.1", 10). +version_declared("perl", "5.22.0", 11). +version_declared("perl", "5.20.3", 12). +version_declared("perl", "5.18.4", 13). +version_declared("perl", "5.16.3", 14). + +variant("perl", "cpanm"). +variant_single_value("perl", "cpanm"). +variant_default_value("perl", "cpanm", "True"). +variant_possible_value("perl", "cpanm", "False"). +variant_possible_value("perl", "cpanm", "True"). + +variant("perl", "shared"). +variant_single_value("perl", "shared"). +variant_default_value("perl", "shared", "True"). +variant_possible_value("perl", "shared", "False"). +variant_possible_value("perl", "shared", "True"). + +variant("perl", "threads"). +variant_single_value("perl", "threads"). +variant_default_value("perl", "threads", "True"). +variant_possible_value("perl", "threads", "False"). +variant_possible_value("perl", "threads", "True"). + +declared_dependency("perl", "gdbm", "build"). +declared_dependency("perl", "gdbm", "link"). +node("gdbm") :- depends_on("perl", "gdbm"), node("perl"). + + +%---------------------------------------------------------------------------- +% Package: perl-data-dumper +%---------------------------------------------------------------------------- +version_declared("perl-data-dumper", "2.173", 0). + +declared_dependency("perl-data-dumper", "perl", "build"). +declared_dependency("perl-data-dumper", "perl", "link"). +declared_dependency("perl-data-dumper", "perl", "run"). +node("perl") :- depends_on("perl-data-dumper", "perl"), node("perl-data-dumper"). + + +%---------------------------------------------------------------------------- +% Package: perl-encode-locale +%---------------------------------------------------------------------------- +version_declared("perl-encode-locale", "1.05", 0). + +declared_dependency("perl-encode-locale", "perl", "build"). +declared_dependency("perl-encode-locale", "perl", "link"). +declared_dependency("perl-encode-locale", "perl", "run"). +node("perl") :- depends_on("perl-encode-locale", "perl"), node("perl-encode-locale"). + + +%---------------------------------------------------------------------------- +% Package: perl-extutils-config +%---------------------------------------------------------------------------- +version_declared("perl-extutils-config", "0.008", 0). + +declared_dependency("perl-extutils-config", "perl", "build"). +declared_dependency("perl-extutils-config", "perl", "link"). +declared_dependency("perl-extutils-config", "perl", "run"). +node("perl") :- depends_on("perl-extutils-config", "perl"), node("perl-extutils-config"). + + +%---------------------------------------------------------------------------- +% Package: perl-extutils-helpers +%---------------------------------------------------------------------------- +version_declared("perl-extutils-helpers", "0.026", 0). + +declared_dependency("perl-extutils-helpers", "perl", "build"). +declared_dependency("perl-extutils-helpers", "perl", "link"). +declared_dependency("perl-extutils-helpers", "perl", "run"). +node("perl") :- depends_on("perl-extutils-helpers", "perl"), node("perl-extutils-helpers"). + + +%---------------------------------------------------------------------------- +% Package: perl-extutils-installpaths +%---------------------------------------------------------------------------- +version_declared("perl-extutils-installpaths", "0.012", 0). + +declared_dependency("perl-extutils-installpaths", "perl", "build"). +declared_dependency("perl-extutils-installpaths", "perl", "link"). +declared_dependency("perl-extutils-installpaths", "perl", "run"). +node("perl") :- depends_on("perl-extutils-installpaths", "perl"), node("perl-extutils-installpaths"). + + +%---------------------------------------------------------------------------- +% Package: perl-file-listing +%---------------------------------------------------------------------------- +version_declared("perl-file-listing", "6.04", 0). + +declared_dependency("perl-file-listing", "perl", "build"). +declared_dependency("perl-file-listing", "perl", "link"). +declared_dependency("perl-file-listing", "perl", "run"). +node("perl") :- depends_on("perl-file-listing", "perl"), node("perl-file-listing"). + +declared_dependency("perl-file-listing", "perl-http-date", "build"). +declared_dependency("perl-file-listing", "perl-http-date", "run"). +node("perl-http-date") :- depends_on("perl-file-listing", "perl-http-date"), node("perl-file-listing"). + + +%---------------------------------------------------------------------------- +% Package: perl-html-parser +%---------------------------------------------------------------------------- +version_declared("perl-html-parser", "3.72", 0). + +declared_dependency("perl-html-parser", "perl", "build"). +declared_dependency("perl-html-parser", "perl", "link"). +declared_dependency("perl-html-parser", "perl", "run"). +node("perl") :- depends_on("perl-html-parser", "perl"), node("perl-html-parser"). + +declared_dependency("perl-html-parser", "perl-html-tagset", "build"). +declared_dependency("perl-html-parser", "perl-html-tagset", "run"). +node("perl-html-tagset") :- depends_on("perl-html-parser", "perl-html-tagset"), node("perl-html-parser"). + + +%---------------------------------------------------------------------------- +% Package: perl-html-tagset +%---------------------------------------------------------------------------- +version_declared("perl-html-tagset", "3.20", 0). + +declared_dependency("perl-html-tagset", "perl", "build"). +declared_dependency("perl-html-tagset", "perl", "link"). +declared_dependency("perl-html-tagset", "perl", "run"). +node("perl") :- depends_on("perl-html-tagset", "perl"), node("perl-html-tagset"). + + +%---------------------------------------------------------------------------- +% Package: perl-http-cookies +%---------------------------------------------------------------------------- +version_declared("perl-http-cookies", "6.04", 0). + +declared_dependency("perl-http-cookies", "perl", "build"). +declared_dependency("perl-http-cookies", "perl", "link"). +declared_dependency("perl-http-cookies", "perl", "run"). +node("perl") :- depends_on("perl-http-cookies", "perl"), node("perl-http-cookies"). + +declared_dependency("perl-http-cookies", "perl-http-message", "build"). +declared_dependency("perl-http-cookies", "perl-http-message", "run"). +node("perl-http-message") :- depends_on("perl-http-cookies", "perl-http-message"), node("perl-http-cookies"). + +declared_dependency("perl-http-cookies", "perl-uri", "build"). +declared_dependency("perl-http-cookies", "perl-uri", "run"). +node("perl-uri") :- depends_on("perl-http-cookies", "perl-uri"), node("perl-http-cookies"). + + +%---------------------------------------------------------------------------- +% Package: perl-http-daemon +%---------------------------------------------------------------------------- +version_declared("perl-http-daemon", "6.01", 0). + +declared_dependency("perl-http-daemon", "perl", "build"). +declared_dependency("perl-http-daemon", "perl", "link"). +declared_dependency("perl-http-daemon", "perl", "run"). +node("perl") :- depends_on("perl-http-daemon", "perl"), node("perl-http-daemon"). + +declared_dependency("perl-http-daemon", "perl-http-date", "build"). +declared_dependency("perl-http-daemon", "perl-http-date", "run"). +node("perl-http-date") :- depends_on("perl-http-daemon", "perl-http-date"), node("perl-http-daemon"). + +declared_dependency("perl-http-daemon", "perl-http-message", "build"). +declared_dependency("perl-http-daemon", "perl-http-message", "run"). +node("perl-http-message") :- depends_on("perl-http-daemon", "perl-http-message"), node("perl-http-daemon"). + +declared_dependency("perl-http-daemon", "perl-lwp-mediatypes", "build"). +declared_dependency("perl-http-daemon", "perl-lwp-mediatypes", "run"). +node("perl-lwp-mediatypes") :- depends_on("perl-http-daemon", "perl-lwp-mediatypes"), node("perl-http-daemon"). + +declared_dependency("perl-http-daemon", "perl-module-build-tiny", "build"). +node("perl-module-build-tiny") :- depends_on("perl-http-daemon", "perl-module-build-tiny"), node("perl-http-daemon"). + + +%---------------------------------------------------------------------------- +% Package: perl-http-date +%---------------------------------------------------------------------------- +version_declared("perl-http-date", "6.02", 0). + +declared_dependency("perl-http-date", "perl", "build"). +declared_dependency("perl-http-date", "perl", "link"). +declared_dependency("perl-http-date", "perl", "run"). +node("perl") :- depends_on("perl-http-date", "perl"), node("perl-http-date"). + + +%---------------------------------------------------------------------------- +% Package: perl-http-message +%---------------------------------------------------------------------------- +version_declared("perl-http-message", "6.13", 0). + +declared_dependency("perl-http-message", "perl", "build"). +declared_dependency("perl-http-message", "perl", "link"). +declared_dependency("perl-http-message", "perl", "run"). +node("perl") :- depends_on("perl-http-message", "perl"), node("perl-http-message"). + +declared_dependency("perl-http-message", "perl-encode-locale", "build"). +declared_dependency("perl-http-message", "perl-encode-locale", "run"). +node("perl-encode-locale") :- depends_on("perl-http-message", "perl-encode-locale"), node("perl-http-message"). + +declared_dependency("perl-http-message", "perl-http-date", "build"). +declared_dependency("perl-http-message", "perl-http-date", "run"). +node("perl-http-date") :- depends_on("perl-http-message", "perl-http-date"), node("perl-http-message"). + +declared_dependency("perl-http-message", "perl-io-html", "build"). +declared_dependency("perl-http-message", "perl-io-html", "run"). +node("perl-io-html") :- depends_on("perl-http-message", "perl-io-html"), node("perl-http-message"). + +declared_dependency("perl-http-message", "perl-lwp-mediatypes", "build"). +declared_dependency("perl-http-message", "perl-lwp-mediatypes", "run"). +node("perl-lwp-mediatypes") :- depends_on("perl-http-message", "perl-lwp-mediatypes"), node("perl-http-message"). + +declared_dependency("perl-http-message", "perl-try-tiny", "build"). +declared_dependency("perl-http-message", "perl-try-tiny", "run"). +node("perl-try-tiny") :- depends_on("perl-http-message", "perl-try-tiny"), node("perl-http-message"). + +declared_dependency("perl-http-message", "perl-uri", "build"). +declared_dependency("perl-http-message", "perl-uri", "run"). +node("perl-uri") :- depends_on("perl-http-message", "perl-uri"), node("perl-http-message"). + + +%---------------------------------------------------------------------------- +% Package: perl-http-negotiate +%---------------------------------------------------------------------------- +version_declared("perl-http-negotiate", "6.01", 0). + +declared_dependency("perl-http-negotiate", "perl", "build"). +declared_dependency("perl-http-negotiate", "perl", "link"). +declared_dependency("perl-http-negotiate", "perl", "run"). +node("perl") :- depends_on("perl-http-negotiate", "perl"), node("perl-http-negotiate"). + +declared_dependency("perl-http-negotiate", "perl-http-message", "build"). +declared_dependency("perl-http-negotiate", "perl-http-message", "run"). +node("perl-http-message") :- depends_on("perl-http-negotiate", "perl-http-message"), node("perl-http-negotiate"). + + +%---------------------------------------------------------------------------- +% Package: perl-io-html +%---------------------------------------------------------------------------- +version_declared("perl-io-html", "1.001", 0). + +declared_dependency("perl-io-html", "perl", "build"). +declared_dependency("perl-io-html", "perl", "link"). +declared_dependency("perl-io-html", "perl", "run"). +node("perl") :- depends_on("perl-io-html", "perl"), node("perl-io-html"). + + +%---------------------------------------------------------------------------- +% Package: perl-libwww-perl +%---------------------------------------------------------------------------- +version_declared("perl-libwww-perl", "6.33", 0). +version_declared("perl-libwww-perl", "6.29", 1). + +declared_dependency("perl-libwww-perl", "perl", "build"). +declared_dependency("perl-libwww-perl", "perl", "link"). +declared_dependency("perl-libwww-perl", "perl", "run"). +node("perl") :- depends_on("perl-libwww-perl", "perl"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-encode-locale", "build"). +declared_dependency("perl-libwww-perl", "perl-encode-locale", "run"). +node("perl-encode-locale") :- depends_on("perl-libwww-perl", "perl-encode-locale"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-file-listing", "build"). +declared_dependency("perl-libwww-perl", "perl-file-listing", "run"). +node("perl-file-listing") :- depends_on("perl-libwww-perl", "perl-file-listing"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-html-parser", "build"). +declared_dependency("perl-libwww-perl", "perl-html-parser", "run"). +node("perl-html-parser") :- depends_on("perl-libwww-perl", "perl-html-parser"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-http-cookies", "build"). +declared_dependency("perl-libwww-perl", "perl-http-cookies", "run"). +node("perl-http-cookies") :- depends_on("perl-libwww-perl", "perl-http-cookies"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-http-daemon", "build"). +declared_dependency("perl-libwww-perl", "perl-http-daemon", "run"). +node("perl-http-daemon") :- depends_on("perl-libwww-perl", "perl-http-daemon"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-http-date", "build"). +declared_dependency("perl-libwww-perl", "perl-http-date", "run"). +node("perl-http-date") :- depends_on("perl-libwww-perl", "perl-http-date"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-http-message", "build"). +declared_dependency("perl-libwww-perl", "perl-http-message", "run"). +node("perl-http-message") :- depends_on("perl-libwww-perl", "perl-http-message"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-http-negotiate", "build"). +declared_dependency("perl-libwww-perl", "perl-http-negotiate", "run"). +node("perl-http-negotiate") :- depends_on("perl-libwww-perl", "perl-http-negotiate"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-lwp-mediatypes", "build"). +declared_dependency("perl-libwww-perl", "perl-lwp-mediatypes", "run"). +node("perl-lwp-mediatypes") :- depends_on("perl-libwww-perl", "perl-lwp-mediatypes"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-net-http", "build"). +declared_dependency("perl-libwww-perl", "perl-net-http", "run"). +node("perl-net-http") :- depends_on("perl-libwww-perl", "perl-net-http"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-try-tiny", "build"). +declared_dependency("perl-libwww-perl", "perl-try-tiny", "run"). +node("perl-try-tiny") :- depends_on("perl-libwww-perl", "perl-try-tiny"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-uri", "build"). +declared_dependency("perl-libwww-perl", "perl-uri", "run"). +node("perl-uri") :- depends_on("perl-libwww-perl", "perl-uri"), node("perl-libwww-perl"). + +declared_dependency("perl-libwww-perl", "perl-www-robotrules", "build"). +declared_dependency("perl-libwww-perl", "perl-www-robotrules", "run"). +node("perl-www-robotrules") :- depends_on("perl-libwww-perl", "perl-www-robotrules"), node("perl-libwww-perl"). + + +%---------------------------------------------------------------------------- +% Package: perl-lwp-mediatypes +%---------------------------------------------------------------------------- +version_declared("perl-lwp-mediatypes", "6.02", 0). + +declared_dependency("perl-lwp-mediatypes", "perl", "build"). +declared_dependency("perl-lwp-mediatypes", "perl", "link"). +declared_dependency("perl-lwp-mediatypes", "perl", "run"). +node("perl") :- depends_on("perl-lwp-mediatypes", "perl"), node("perl-lwp-mediatypes"). + + +%---------------------------------------------------------------------------- +% Package: perl-module-build +%---------------------------------------------------------------------------- +version_declared("perl-module-build", "0.4224", 0). +version_declared("perl-module-build", "0.4220", 1). + +declared_dependency("perl-module-build", "perl", "build"). +declared_dependency("perl-module-build", "perl", "link"). +declared_dependency("perl-module-build", "perl", "run"). +node("perl") :- depends_on("perl-module-build", "perl"), node("perl-module-build"). + + +%---------------------------------------------------------------------------- +% Package: perl-module-build-tiny +%---------------------------------------------------------------------------- +version_declared("perl-module-build-tiny", "0.039", 0). + +declared_dependency("perl-module-build-tiny", "perl", "build"). +declared_dependency("perl-module-build-tiny", "perl", "link"). +declared_dependency("perl-module-build-tiny", "perl", "run"). +node("perl") :- depends_on("perl-module-build-tiny", "perl"), node("perl-module-build-tiny"). + +declared_dependency("perl-module-build-tiny", "perl-extutils-config", "build"). +declared_dependency("perl-module-build-tiny", "perl-extutils-config", "run"). +node("perl-extutils-config") :- depends_on("perl-module-build-tiny", "perl-extutils-config"), node("perl-module-build-tiny"). + +declared_dependency("perl-module-build-tiny", "perl-extutils-helpers", "build"). +declared_dependency("perl-module-build-tiny", "perl-extutils-helpers", "run"). +node("perl-extutils-helpers") :- depends_on("perl-module-build-tiny", "perl-extutils-helpers"), node("perl-module-build-tiny"). + +declared_dependency("perl-module-build-tiny", "perl-extutils-installpaths", "build"). +declared_dependency("perl-module-build-tiny", "perl-extutils-installpaths", "run"). +node("perl-extutils-installpaths") :- depends_on("perl-module-build-tiny", "perl-extutils-installpaths"), node("perl-module-build-tiny"). + +declared_dependency("perl-module-build-tiny", "perl-module-build", "build"). +node("perl-module-build") :- depends_on("perl-module-build-tiny", "perl-module-build"), node("perl-module-build-tiny"). + + +%---------------------------------------------------------------------------- +% Package: perl-net-http +%---------------------------------------------------------------------------- +version_declared("perl-net-http", "6.17", 0). + +declared_dependency("perl-net-http", "perl", "build"). +declared_dependency("perl-net-http", "perl", "link"). +declared_dependency("perl-net-http", "perl", "run"). +node("perl") :- depends_on("perl-net-http", "perl"), node("perl-net-http"). + +declared_dependency("perl-net-http", "perl-uri", "build"). +declared_dependency("perl-net-http", "perl-uri", "run"). +node("perl-uri") :- depends_on("perl-net-http", "perl-uri"), node("perl-net-http"). + + +%---------------------------------------------------------------------------- +% Package: perl-test-needs +%---------------------------------------------------------------------------- +version_declared("perl-test-needs", "0.002005", 0). + +declared_dependency("perl-test-needs", "perl", "build"). +declared_dependency("perl-test-needs", "perl", "link"). +declared_dependency("perl-test-needs", "perl", "run"). +node("perl") :- depends_on("perl-test-needs", "perl"), node("perl-test-needs"). + + +%---------------------------------------------------------------------------- +% Package: perl-try-tiny +%---------------------------------------------------------------------------- +version_declared("perl-try-tiny", "0.28", 0). + +declared_dependency("perl-try-tiny", "perl", "build"). +declared_dependency("perl-try-tiny", "perl", "link"). +declared_dependency("perl-try-tiny", "perl", "run"). +node("perl") :- depends_on("perl-try-tiny", "perl"), node("perl-try-tiny"). + + +%---------------------------------------------------------------------------- +% Package: perl-uri +%---------------------------------------------------------------------------- +version_declared("perl-uri", "1.72", 0). +version_declared("perl-uri", "1.71", 1). + +declared_dependency("perl-uri", "perl", "build"). +declared_dependency("perl-uri", "perl", "link"). +declared_dependency("perl-uri", "perl", "run"). +node("perl") :- depends_on("perl-uri", "perl"), node("perl-uri"). + +declared_dependency("perl-uri", "perl-test-needs", "build"). +declared_dependency("perl-uri", "perl-test-needs", "test"). +node("perl-test-needs") :- depends_on("perl-uri", "perl-test-needs"), node("perl-uri"). + + +%---------------------------------------------------------------------------- +% Package: perl-www-robotrules +%---------------------------------------------------------------------------- +version_declared("perl-www-robotrules", "6.02", 0). + +declared_dependency("perl-www-robotrules", "perl", "build"). +declared_dependency("perl-www-robotrules", "perl", "link"). +declared_dependency("perl-www-robotrules", "perl", "run"). +node("perl") :- depends_on("perl-www-robotrules", "perl"), node("perl-www-robotrules"). + +declared_dependency("perl-www-robotrules", "perl-uri", "build"). +declared_dependency("perl-www-robotrules", "perl-uri", "run"). +node("perl-uri") :- depends_on("perl-www-robotrules", "perl-uri"), node("perl-www-robotrules"). + + +%---------------------------------------------------------------------------- +% Package: perl-xml-parser +%---------------------------------------------------------------------------- +version_declared("perl-xml-parser", "2.44", 0). + +declared_dependency("perl-xml-parser", "expat", "build"). +declared_dependency("perl-xml-parser", "expat", "link"). +node("expat") :- depends_on("perl-xml-parser", "expat"), node("perl-xml-parser"). + +declared_dependency("perl-xml-parser", "perl", "build"). +declared_dependency("perl-xml-parser", "perl", "link"). +declared_dependency("perl-xml-parser", "perl", "run"). +node("perl") :- depends_on("perl-xml-parser", "perl"), node("perl-xml-parser"). + +declared_dependency("perl-xml-parser", "perl-libwww-perl", "build"). +declared_dependency("perl-xml-parser", "perl-libwww-perl", "run"). +node("perl-libwww-perl") :- depends_on("perl-xml-parser", "perl-libwww-perl"), node("perl-xml-parser"). + + +%---------------------------------------------------------------------------- +% Package: pixman +%---------------------------------------------------------------------------- +version_declared("pixman", "0.38.0", 0). +version_declared("pixman", "0.34.0", 1). +version_declared("pixman", "0.32.6", 2). + +declared_dependency("pixman", "libpng", "build"). +declared_dependency("pixman", "libpng", "link"). +node("libpng") :- depends_on("pixman", "libpng"), node("pixman"). + +declared_dependency("pixman", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("pixman", "pkgconfig"), node("pixman"). + + +%---------------------------------------------------------------------------- +% Package: pkg-config +%---------------------------------------------------------------------------- +version_declared("pkg-config", "0.29.2", 0). +version_declared("pkg-config", "0.29.1", 1). +version_declared("pkg-config", "0.28", 2). + +variant("pkg-config", "internal_glib"). +variant_single_value("pkg-config", "internal_glib"). +variant_default_value("pkg-config", "internal_glib", "True"). +variant_possible_value("pkg-config", "internal_glib", "False"). +variant_possible_value("pkg-config", "internal_glib", "True"). + + +%---------------------------------------------------------------------------- +% Package: pkgconf +%---------------------------------------------------------------------------- +version_declared("pkgconf", "1.6.3", 0). +version_declared("pkgconf", "1.6.1", 1). +version_declared("pkgconf", "1.6.0", 2). +version_declared("pkgconf", "1.5.4", 3). +version_declared("pkgconf", "1.4.2", 4). +version_declared("pkgconf", "1.4.0", 5). +version_declared("pkgconf", "1.3.10", 6). +version_declared("pkgconf", "1.3.8", 7). + + +%---------------------------------------------------------------------------- +% Package: pmix +%---------------------------------------------------------------------------- +version_declared("pmix", "3.1.3", 0). +version_declared("pmix", "3.1.2", 1). +version_declared("pmix", "3.0.2", 2). +version_declared("pmix", "3.0.1", 3). +version_declared("pmix", "3.0.0", 4). +version_declared("pmix", "2.2.2", 5). +version_declared("pmix", "2.1.4", 6). +version_declared("pmix", "2.1.3", 7). +version_declared("pmix", "2.1.2", 8). +version_declared("pmix", "2.0.1", 9). +version_declared("pmix", "1.2.5", 10). + +declared_dependency("pmix", "hwloc", "build") :- node("pmix"), 1 { version("pmix", "3.0.0"); version("pmix", "3.0.1"); version("pmix", "3.0.2"); version("pmix", "3.1.2"); version("pmix", "3.1.3") } 1. +declared_dependency("pmix", "hwloc", "link") :- node("pmix"), 1 { version("pmix", "3.0.0"); version("pmix", "3.0.1"); version("pmix", "3.0.2"); version("pmix", "3.1.2"); version("pmix", "3.1.3") } 1. +node("hwloc") :- depends_on("pmix", "hwloc"), node("pmix"), 1 { version("pmix", "3.0.0"); version("pmix", "3.0.1"); version("pmix", "3.0.2"); version("pmix", "3.1.2"); version("pmix", "3.1.3") } 1. +1 { version("hwloc", "1.11.1"); version("hwloc", "1.11.2"); version("hwloc", "1.11.3"); version("hwloc", "1.11.4"); version("hwloc", "1.11.5"); version("hwloc", "1.11.6"); version("hwloc", "1.11.7"); version("hwloc", "1.11.8"); version("hwloc", "1.11.9"); version("hwloc", "1.11.10"); version("hwloc", "1.11.11"); version("hwloc", "2.0.1"); version("hwloc", "2.0.2"); version("hwloc", "2.1.0"); version("hwloc", "master") } 1 :- depends_on("pmix", "hwloc"), node("pmix"), 1 { version("pmix", "3.0.0"); version("pmix", "3.0.1"); version("pmix", "3.0.2"); version("pmix", "3.1.2"); version("pmix", "3.1.3") } 1. + +declared_dependency("pmix", "libevent", "build"). +declared_dependency("pmix", "libevent", "link"). +node("libevent") :- depends_on("pmix", "libevent"), node("pmix"). +1 { version("libevent", "2.0.20"); version("libevent", "2.0.21"); version("libevent", "2.0.22"); version("libevent", "2.1.8") } 1 :- depends_on("pmix", "libevent"), node("pmix"). + + +%---------------------------------------------------------------------------- +% Package: psm +%---------------------------------------------------------------------------- +version_declared("psm", "3.3", 0). +version_declared("psm", "2017-04-28", 1). + +declared_dependency("psm", "libuuid", "build"). +declared_dependency("psm", "libuuid", "link"). +node("libuuid") :- depends_on("psm", "libuuid"), node("psm"). + + +%---------------------------------------------------------------------------- +% Package: py-alabaster +%---------------------------------------------------------------------------- +version_declared("py-alabaster", "0.7.12", 0). +version_declared("py-alabaster", "0.7.10", 1). +version_declared("py-alabaster", "0.7.9", 2). + +declared_dependency("py-alabaster", "py-pygments", "test"). +node("py-pygments") :- depends_on("py-alabaster", "py-pygments"), node("py-alabaster"). + +declared_dependency("py-alabaster", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-alabaster", "py-setuptools"), node("py-alabaster"). + +declared_dependency("py-alabaster", "python", "build"). +declared_dependency("py-alabaster", "python", "link"). +declared_dependency("py-alabaster", "python", "run"). +node("python") :- depends_on("py-alabaster", "python"), node("py-alabaster"). + + +%---------------------------------------------------------------------------- +% Package: py-appdirs +%---------------------------------------------------------------------------- +version_declared("py-appdirs", "1.4.3", 0). +version_declared("py-appdirs", "1.4.0", 1). + +declared_dependency("py-appdirs", "python", "build"). +declared_dependency("py-appdirs", "python", "link"). +declared_dependency("py-appdirs", "python", "run"). +node("python") :- depends_on("py-appdirs", "python"), node("py-appdirs"). + + +%---------------------------------------------------------------------------- +% Package: py-attrs +%---------------------------------------------------------------------------- +version_declared("py-attrs", "19.2.0", 0). +version_declared("py-attrs", "18.1.0", 1). +version_declared("py-attrs", "16.3.0", 2). + +declared_dependency("py-attrs", "py-coverage", "test"). +node("py-coverage") :- depends_on("py-attrs", "py-coverage"), node("py-attrs"). + +declared_dependency("py-attrs", "py-hypothesis", "test"). +node("py-hypothesis") :- depends_on("py-attrs", "py-hypothesis"), node("py-attrs"). + +declared_dependency("py-attrs", "py-pympler", "test"). +node("py-pympler") :- depends_on("py-attrs", "py-pympler"), node("py-attrs"). + +declared_dependency("py-attrs", "py-pytest", "test"). +node("py-pytest") :- depends_on("py-attrs", "py-pytest"), node("py-attrs"). + +declared_dependency("py-attrs", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-attrs", "py-setuptools"), node("py-attrs"). + +declared_dependency("py-attrs", "py-six", "test"). +node("py-six") :- depends_on("py-attrs", "py-six"), node("py-attrs"). + +declared_dependency("py-attrs", "py-zope-interface", "test"). +node("py-zope-interface") :- depends_on("py-attrs", "py-zope-interface"), node("py-attrs"). + +declared_dependency("py-attrs", "python", "build"). +declared_dependency("py-attrs", "python", "link"). +declared_dependency("py-attrs", "python", "run"). +node("python") :- depends_on("py-attrs", "python"), node("py-attrs"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-attrs", "python"), node("py-attrs"). + + +%---------------------------------------------------------------------------- +% Package: py-babel +%---------------------------------------------------------------------------- +version_declared("py-babel", "2.7.0", 0). +version_declared("py-babel", "2.6.0", 1). +version_declared("py-babel", "2.4.0", 2). +version_declared("py-babel", "2.3.4", 3). + +declared_dependency("py-babel", "py-freezegun", "test"). +node("py-freezegun") :- depends_on("py-babel", "py-freezegun"), node("py-babel"). + +declared_dependency("py-babel", "py-pytest", "test"). +node("py-pytest") :- depends_on("py-babel", "py-pytest"), node("py-babel"). + +declared_dependency("py-babel", "py-pytz", "build"). +declared_dependency("py-babel", "py-pytz", "run"). +node("py-pytz") :- depends_on("py-babel", "py-pytz"), node("py-babel"). +1 { version("py-pytz", "2016.3"); version("py-pytz", "2016.6.1"); version("py-pytz", "2016.10"); version("py-pytz", "2018.4"); version("py-pytz", "2019.3") } 1 :- depends_on("py-babel", "py-pytz"), node("py-babel"). + +declared_dependency("py-babel", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-babel", "py-setuptools"), node("py-babel"). + +declared_dependency("py-babel", "python", "build"). +declared_dependency("py-babel", "python", "link"). +declared_dependency("py-babel", "python", "run"). +node("python") :- depends_on("py-babel", "python"), node("py-babel"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-babel", "python"), node("py-babel"). + + +%---------------------------------------------------------------------------- +% Package: py-certifi +%---------------------------------------------------------------------------- +version_declared("py-certifi", "2019.9.11", 0). +version_declared("py-certifi", "2019.6.16", 1). +version_declared("py-certifi", "2017.4.17", 2). +version_declared("py-certifi", "2017.1.23", 3). + +declared_dependency("py-certifi", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-certifi", "py-setuptools"), node("py-certifi"). + +declared_dependency("py-certifi", "python", "build"). +declared_dependency("py-certifi", "python", "link"). +declared_dependency("py-certifi", "python", "run"). +node("python") :- depends_on("py-certifi", "python"), node("py-certifi"). + + +%---------------------------------------------------------------------------- +% Package: py-chardet +%---------------------------------------------------------------------------- +version_declared("py-chardet", "3.0.4", 0). +version_declared("py-chardet", "3.0.2", 1). +version_declared("py-chardet", "2.3.0", 2). + +declared_dependency("py-chardet", "py-hypothesis", "test"). +node("py-hypothesis") :- depends_on("py-chardet", "py-hypothesis"), node("py-chardet"). + +declared_dependency("py-chardet", "py-pytest", "test"). +node("py-pytest") :- depends_on("py-chardet", "py-pytest"), node("py-chardet"). + +declared_dependency("py-chardet", "py-pytest-runner", "build"). +node("py-pytest-runner") :- depends_on("py-chardet", "py-pytest-runner"), node("py-chardet"). + +declared_dependency("py-chardet", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-chardet", "py-setuptools"), node("py-chardet"). + +declared_dependency("py-chardet", "python", "build"). +declared_dependency("py-chardet", "python", "link"). +declared_dependency("py-chardet", "python", "run"). +node("python") :- depends_on("py-chardet", "python"), node("py-chardet"). + + +%---------------------------------------------------------------------------- +% Package: py-cython +%---------------------------------------------------------------------------- +version_declared("py-cython", "0.29.14", 0). +version_declared("py-cython", "0.29.13", 1). +version_declared("py-cython", "0.29.7", 2). +version_declared("py-cython", "0.29.5", 3). +version_declared("py-cython", "0.29", 4). +version_declared("py-cython", "0.28.6", 5). +version_declared("py-cython", "0.28.3", 6). +version_declared("py-cython", "0.28.1", 7). +version_declared("py-cython", "0.25.2", 8). +version_declared("py-cython", "0.23.5", 9). +version_declared("py-cython", "0.23.4", 10). +version_declared("py-cython", "0.21.2", 11). + +declared_dependency("py-cython", "gdb", "test"). +node("gdb") :- depends_on("py-cython", "gdb"), node("py-cython"). + +declared_dependency("py-cython", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-cython", "py-setuptools"), node("py-cython"). + +declared_dependency("py-cython", "python", "build") :- node("py-cython"), 1 { version("py-cython", "0.21.2") } 1. +declared_dependency("py-cython", "python", "run") :- node("py-cython"), 1 { version("py-cython", "0.21.2") } 1. +node("python") :- depends_on("py-cython", "python"), node("py-cython"), 1 { version("py-cython", "0.21.2") } 1. +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16") } 1 :- depends_on("py-cython", "python"), node("py-cython"), 1 { version("py-cython", "0.21.2") } 1. +declared_dependency("py-cython", "python", "build"). +declared_dependency("py-cython", "python", "link"). +declared_dependency("py-cython", "python", "run"). +node("python") :- depends_on("py-cython", "python"), node("py-cython"). +declared_dependency("py-cython", "python", "build") :- node("py-cython"), 1 { version("py-cython", "0.23.4"); version("py-cython", "0.23.5"); version("py-cython", "0.25.2"); version("py-cython", "0.28.1"); version("py-cython", "0.28.3"); version("py-cython", "0.28.6"); version("py-cython", "0.29"); version("py-cython", "0.29.5"); version("py-cython", "0.29.7"); version("py-cython", "0.29.13"); version("py-cython", "0.29.14") } 1. +declared_dependency("py-cython", "python", "run") :- node("py-cython"), 1 { version("py-cython", "0.23.4"); version("py-cython", "0.23.5"); version("py-cython", "0.25.2"); version("py-cython", "0.28.1"); version("py-cython", "0.28.3"); version("py-cython", "0.28.6"); version("py-cython", "0.29"); version("py-cython", "0.29.5"); version("py-cython", "0.29.7"); version("py-cython", "0.29.13"); version("py-cython", "0.29.14") } 1. +node("python") :- depends_on("py-cython", "python"), node("py-cython"), 1 { version("py-cython", "0.23.4"); version("py-cython", "0.23.5"); version("py-cython", "0.25.2"); version("py-cython", "0.28.1"); version("py-cython", "0.28.3"); version("py-cython", "0.28.6"); version("py-cython", "0.29"); version("py-cython", "0.29.5"); version("py-cython", "0.29.7"); version("py-cython", "0.29.13"); version("py-cython", "0.29.14") } 1. +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-cython", "python"), node("py-cython"), 1 { version("py-cython", "0.23.4"); version("py-cython", "0.23.5"); version("py-cython", "0.25.2"); version("py-cython", "0.28.1"); version("py-cython", "0.28.3"); version("py-cython", "0.28.6"); version("py-cython", "0.29"); version("py-cython", "0.29.5"); version("py-cython", "0.29.7"); version("py-cython", "0.29.13"); version("py-cython", "0.29.14") } 1. + + +%---------------------------------------------------------------------------- +% Package: py-docutils +%---------------------------------------------------------------------------- +version_declared("py-docutils", "0.15.2", 0). +version_declared("py-docutils", "0.14", 1). +version_declared("py-docutils", "0.13.1", 2). +version_declared("py-docutils", "0.12", 3). + +declared_dependency("py-docutils", "py-setuptools", "build") :- node("py-docutils"), 1 { version("py-docutils", "0.15.2") } 1. +node("py-setuptools") :- depends_on("py-docutils", "py-setuptools"), node("py-docutils"), 1 { version("py-docutils", "0.15.2") } 1. + +declared_dependency("py-docutils", "python", "build") :- node("py-docutils"). +declared_dependency("py-docutils", "python", "run") :- node("py-docutils"). +node("python") :- depends_on("py-docutils", "python"), node("py-docutils"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16") } 1 :- depends_on("py-docutils", "python"), node("py-docutils"). +declared_dependency("py-docutils", "python", "build"). +declared_dependency("py-docutils", "python", "link"). +declared_dependency("py-docutils", "python", "run"). +node("python") :- depends_on("py-docutils", "python"), node("py-docutils"). +declared_dependency("py-docutils", "python", "build") :- node("py-docutils"). +declared_dependency("py-docutils", "python", "run") :- node("py-docutils"). +node("python") :- depends_on("py-docutils", "python"), node("py-docutils"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16") } 1 :- depends_on("py-docutils", "python"), node("py-docutils"). +declared_dependency("py-docutils", "python", "build") :- node("py-docutils"). +declared_dependency("py-docutils", "python", "run") :- node("py-docutils"). +node("python") :- depends_on("py-docutils", "python"), node("py-docutils"). +declared_dependency("py-docutils", "python", "build") :- node("py-docutils"), 1 { version("py-docutils", "0.12"); version("py-docutils", "0.13.1") } 1. +declared_dependency("py-docutils", "python", "run") :- node("py-docutils"), 1 { version("py-docutils", "0.12"); version("py-docutils", "0.13.1") } 1. +node("python") :- depends_on("py-docutils", "python"), node("py-docutils"), 1 { version("py-docutils", "0.12"); version("py-docutils", "0.13.1") } 1. +declared_dependency("py-docutils", "python", "build") :- node("py-docutils"), 1 { version("py-docutils", "0.14"); version("py-docutils", "0.15.2") } 1. +declared_dependency("py-docutils", "python", "run") :- node("py-docutils"), 1 { version("py-docutils", "0.14"); version("py-docutils", "0.15.2") } 1. +node("python") :- depends_on("py-docutils", "python"), node("py-docutils"), 1 { version("py-docutils", "0.14"); version("py-docutils", "0.15.2") } 1. +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-docutils", "python"), node("py-docutils"), 1 { version("py-docutils", "0.14"); version("py-docutils", "0.15.2") } 1. +declared_dependency("py-docutils", "python", "build") :- node("py-docutils"). +declared_dependency("py-docutils", "python", "run") :- node("py-docutils"). +node("python") :- depends_on("py-docutils", "python"), node("py-docutils"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-docutils", "python"), node("py-docutils"). + + +%---------------------------------------------------------------------------- +% Package: py-idna +%---------------------------------------------------------------------------- +version_declared("py-idna", "2.8", 0). +version_declared("py-idna", "2.5", 1). + +declared_dependency("py-idna", "py-setuptools", "build"). +declared_dependency("py-idna", "py-setuptools", "link"). +node("py-setuptools") :- depends_on("py-idna", "py-setuptools"), node("py-idna"). + +declared_dependency("py-idna", "python", "build"). +declared_dependency("py-idna", "python", "link"). +declared_dependency("py-idna", "python", "run"). +node("python") :- depends_on("py-idna", "python"), node("py-idna"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-idna", "python"), node("py-idna"). + + +%---------------------------------------------------------------------------- +% Package: py-imagesize +%---------------------------------------------------------------------------- +version_declared("py-imagesize", "1.1.0", 0). +version_declared("py-imagesize", "0.7.1", 1). + +declared_dependency("py-imagesize", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-imagesize", "py-setuptools"), node("py-imagesize"). + +declared_dependency("py-imagesize", "python", "build"). +declared_dependency("py-imagesize", "python", "link"). +declared_dependency("py-imagesize", "python", "run"). +node("python") :- depends_on("py-imagesize", "python"), node("py-imagesize"). + + +%---------------------------------------------------------------------------- +% Package: py-jinja2 +%---------------------------------------------------------------------------- +version_declared("py-jinja2", "2.10.3", 0). +version_declared("py-jinja2", "2.10", 1). +version_declared("py-jinja2", "2.9.6", 2). +version_declared("py-jinja2", "2.8", 3). +version_declared("py-jinja2", "2.7.3", 4). +version_declared("py-jinja2", "2.7.2", 5). +version_declared("py-jinja2", "2.7.1", 6). +version_declared("py-jinja2", "2.7", 7). + +declared_dependency("py-jinja2", "py-babel", "build"). +declared_dependency("py-jinja2", "py-babel", "run"). +node("py-babel") :- depends_on("py-jinja2", "py-babel"), node("py-jinja2"). + +declared_dependency("py-jinja2", "py-markupsafe", "build"). +declared_dependency("py-jinja2", "py-markupsafe", "run"). +node("py-markupsafe") :- depends_on("py-jinja2", "py-markupsafe"), node("py-jinja2"). +1 { version("py-markupsafe", "0.23"); version("py-markupsafe", "1.0"); version("py-markupsafe", "1.1.1") } 1 :- depends_on("py-jinja2", "py-markupsafe"), node("py-jinja2"). + +declared_dependency("py-jinja2", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-jinja2", "py-setuptools"), node("py-jinja2"). + +declared_dependency("py-jinja2", "python", "build"). +declared_dependency("py-jinja2", "python", "link"). +declared_dependency("py-jinja2", "python", "run"). +node("python") :- depends_on("py-jinja2", "python"), node("py-jinja2"). + + +%---------------------------------------------------------------------------- +% Package: py-mako +%---------------------------------------------------------------------------- +version_declared("py-mako", "1.0.4", 0). +version_declared("py-mako", "1.0.1", 1). + +declared_dependency("py-mako", "py-markupsafe", "build"). +declared_dependency("py-mako", "py-markupsafe", "run"). +node("py-markupsafe") :- depends_on("py-mako", "py-markupsafe"), node("py-mako"). + +declared_dependency("py-mako", "py-mock", "test"). +node("py-mock") :- depends_on("py-mako", "py-mock"), node("py-mako"). + +declared_dependency("py-mako", "py-pytest", "test"). +node("py-pytest") :- depends_on("py-mako", "py-pytest"), node("py-mako"). + +declared_dependency("py-mako", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-mako", "py-setuptools"), node("py-mako"). + +declared_dependency("py-mako", "python", "build"). +declared_dependency("py-mako", "python", "link"). +declared_dependency("py-mako", "python", "run"). +node("python") :- depends_on("py-mako", "python"), node("py-mako"). + + +%---------------------------------------------------------------------------- +% Package: py-markupsafe +%---------------------------------------------------------------------------- +version_declared("py-markupsafe", "1.1.1", 0). +version_declared("py-markupsafe", "1.0", 1). +version_declared("py-markupsafe", "0.23", 2). +version_declared("py-markupsafe", "0.22", 3). +version_declared("py-markupsafe", "0.21", 4). +version_declared("py-markupsafe", "0.20", 5). +version_declared("py-markupsafe", "0.19", 6). + +declared_dependency("py-markupsafe", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-markupsafe", "py-setuptools"), node("py-markupsafe"). + +declared_dependency("py-markupsafe", "python", "build"). +declared_dependency("py-markupsafe", "python", "link"). +declared_dependency("py-markupsafe", "python", "run"). +node("python") :- depends_on("py-markupsafe", "python"), node("py-markupsafe"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-markupsafe", "python"), node("py-markupsafe"). + + +%---------------------------------------------------------------------------- +% Package: py-numpy +%---------------------------------------------------------------------------- +version_declared("py-numpy", "1.18.1", 0). +version_declared("py-numpy", "1.18.0", 1). +version_declared("py-numpy", "1.17.5", 2). +version_declared("py-numpy", "1.17.4", 3). +version_declared("py-numpy", "1.17.3", 4). +version_declared("py-numpy", "1.17.2", 5). +version_declared("py-numpy", "1.17.1", 6). +version_declared("py-numpy", "1.17.0", 7). +version_declared("py-numpy", "1.16.6", 8). +version_declared("py-numpy", "1.16.5", 9). +version_declared("py-numpy", "1.16.4", 10). +version_declared("py-numpy", "1.16.3", 11). +version_declared("py-numpy", "1.16.2", 12). +version_declared("py-numpy", "1.16.1", 13). +version_declared("py-numpy", "1.16.0", 14). +version_declared("py-numpy", "1.15.4", 15). +version_declared("py-numpy", "1.15.3", 16). +version_declared("py-numpy", "1.15.2", 17). +version_declared("py-numpy", "1.15.1", 18). +version_declared("py-numpy", "1.15.0", 19). +version_declared("py-numpy", "1.14.6", 20). +version_declared("py-numpy", "1.14.5", 21). +version_declared("py-numpy", "1.14.4", 22). +version_declared("py-numpy", "1.14.3", 23). +version_declared("py-numpy", "1.14.2", 24). +version_declared("py-numpy", "1.14.1", 25). +version_declared("py-numpy", "1.14.0", 26). +version_declared("py-numpy", "1.13.3", 27). +version_declared("py-numpy", "1.13.1", 28). +version_declared("py-numpy", "1.13.0", 29). +version_declared("py-numpy", "1.12.1", 30). +version_declared("py-numpy", "1.12.0", 31). +version_declared("py-numpy", "1.11.3", 32). +version_declared("py-numpy", "1.11.2", 33). +version_declared("py-numpy", "1.11.1", 34). +version_declared("py-numpy", "1.11.0", 35). +version_declared("py-numpy", "1.10.4", 36). +version_declared("py-numpy", "1.9.3", 37). +version_declared("py-numpy", "1.9.2", 38). +version_declared("py-numpy", "1.9.1", 39). +version_declared("py-numpy", "master", 40). + +variant("py-numpy", "blas"). +variant_single_value("py-numpy", "blas"). +variant_default_value("py-numpy", "blas", "True"). +variant_possible_value("py-numpy", "blas", "False"). +variant_possible_value("py-numpy", "blas", "True"). + +variant("py-numpy", "lapack"). +variant_single_value("py-numpy", "lapack"). +variant_default_value("py-numpy", "lapack", "True"). +variant_possible_value("py-numpy", "lapack", "False"). +variant_possible_value("py-numpy", "lapack", "True"). + +declared_dependency("py-numpy", "blas", "build") :- node("py-numpy"), variant_value("py-numpy", "blas", "True"). +declared_dependency("py-numpy", "blas", "link") :- node("py-numpy"), variant_value("py-numpy", "blas", "True"). +node("blas") :- depends_on("py-numpy", "blas"), node("py-numpy"), variant_value("py-numpy", "blas", "True"). + +declared_dependency("py-numpy", "lapack", "build") :- node("py-numpy"), variant_value("py-numpy", "lapack", "True"). +declared_dependency("py-numpy", "lapack", "link") :- node("py-numpy"), variant_value("py-numpy", "lapack", "True"). +node("lapack") :- depends_on("py-numpy", "lapack"), node("py-numpy"), variant_value("py-numpy", "lapack", "True"). + +declared_dependency("py-numpy", "py-cython", "build") :- node("py-numpy"), 1 { version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +node("py-cython") :- depends_on("py-numpy", "py-cython"), node("py-numpy"), 1 { version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +1 { version("py-cython", "0.29"); version("py-cython", "0.29.13"); version("py-cython", "0.29.14") } 1 :- depends_on("py-numpy", "py-cython"), node("py-numpy"), 1 { version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +declared_dependency("py-numpy", "py-cython", "build") :- node("py-numpy"), 1 { version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +node("py-cython") :- depends_on("py-numpy", "py-cython"), node("py-numpy"), 1 { version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +1 { version("py-cython", "0.29"); version("py-cython", "0.29.14") } 1 :- depends_on("py-numpy", "py-cython"), node("py-numpy"), 1 { version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. + +declared_dependency("py-numpy", "py-nose", "test") :- node("py-numpy"), 1 { version("py-numpy", "1.9.1"); version("py-numpy", "1.9.2"); version("py-numpy", "1.9.3"); version("py-numpy", "1.10.4"); version("py-numpy", "1.11.0"); version("py-numpy", "1.11.1"); version("py-numpy", "1.11.2"); version("py-numpy", "1.11.3"); version("py-numpy", "1.12.0"); version("py-numpy", "1.12.1"); version("py-numpy", "1.13.0"); version("py-numpy", "1.13.1"); version("py-numpy", "1.13.3"); version("py-numpy", "1.14.0"); version("py-numpy", "1.14.1"); version("py-numpy", "1.14.2"); version("py-numpy", "1.14.3"); version("py-numpy", "1.14.4"); version("py-numpy", "1.14.5"); version("py-numpy", "1.14.6") } 1. +node("py-nose") :- depends_on("py-numpy", "py-nose"), node("py-numpy"), 1 { version("py-numpy", "1.9.1"); version("py-numpy", "1.9.2"); version("py-numpy", "1.9.3"); version("py-numpy", "1.10.4"); version("py-numpy", "1.11.0"); version("py-numpy", "1.11.1"); version("py-numpy", "1.11.2"); version("py-numpy", "1.11.3"); version("py-numpy", "1.12.0"); version("py-numpy", "1.12.1"); version("py-numpy", "1.13.0"); version("py-numpy", "1.13.1"); version("py-numpy", "1.13.3"); version("py-numpy", "1.14.0"); version("py-numpy", "1.14.1"); version("py-numpy", "1.14.2"); version("py-numpy", "1.14.3"); version("py-numpy", "1.14.4"); version("py-numpy", "1.14.5"); version("py-numpy", "1.14.6") } 1. + +declared_dependency("py-numpy", "py-pytest", "test") :- node("py-numpy"), 1 { version("py-numpy", "1.15.0"); version("py-numpy", "1.15.1"); version("py-numpy", "1.15.2"); version("py-numpy", "1.15.3"); version("py-numpy", "1.15.4"); version("py-numpy", "1.16.0"); version("py-numpy", "1.16.1"); version("py-numpy", "1.16.2"); version("py-numpy", "1.16.3"); version("py-numpy", "1.16.4"); version("py-numpy", "1.16.5"); version("py-numpy", "1.16.6"); version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +node("py-pytest") :- depends_on("py-numpy", "py-pytest"), node("py-numpy"), 1 { version("py-numpy", "1.15.0"); version("py-numpy", "1.15.1"); version("py-numpy", "1.15.2"); version("py-numpy", "1.15.3"); version("py-numpy", "1.15.4"); version("py-numpy", "1.16.0"); version("py-numpy", "1.16.1"); version("py-numpy", "1.16.2"); version("py-numpy", "1.16.3"); version("py-numpy", "1.16.4"); version("py-numpy", "1.16.5"); version("py-numpy", "1.16.6"); version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. + +declared_dependency("py-numpy", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-numpy", "py-setuptools"), node("py-numpy"). + +declared_dependency("py-numpy", "python", "build"). +declared_dependency("py-numpy", "python", "link"). +declared_dependency("py-numpy", "python", "run"). +node("python") :- depends_on("py-numpy", "python"), node("py-numpy"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-numpy", "python"), node("py-numpy"). +declared_dependency("py-numpy", "python", "build") :- node("py-numpy"), 1 { version("py-numpy", "1.16.0"); version("py-numpy", "1.16.1"); version("py-numpy", "1.16.2"); version("py-numpy", "1.16.3"); version("py-numpy", "1.16.4"); version("py-numpy", "1.16.5"); version("py-numpy", "1.16.6"); version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +declared_dependency("py-numpy", "python", "run") :- node("py-numpy"), 1 { version("py-numpy", "1.16.0"); version("py-numpy", "1.16.1"); version("py-numpy", "1.16.2"); version("py-numpy", "1.16.3"); version("py-numpy", "1.16.4"); version("py-numpy", "1.16.5"); version("py-numpy", "1.16.6"); version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +node("python") :- depends_on("py-numpy", "python"), node("py-numpy"), 1 { version("py-numpy", "1.16.0"); version("py-numpy", "1.16.1"); version("py-numpy", "1.16.2"); version("py-numpy", "1.16.3"); version("py-numpy", "1.16.4"); version("py-numpy", "1.16.5"); version("py-numpy", "1.16.6"); version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-numpy", "python"), node("py-numpy"), 1 { version("py-numpy", "1.16.0"); version("py-numpy", "1.16.1"); version("py-numpy", "1.16.2"); version("py-numpy", "1.16.3"); version("py-numpy", "1.16.4"); version("py-numpy", "1.16.5"); version("py-numpy", "1.16.6"); version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +declared_dependency("py-numpy", "python", "build") :- node("py-numpy"), 1 { version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +declared_dependency("py-numpy", "python", "run") :- node("py-numpy"), 1 { version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +node("python") :- depends_on("py-numpy", "python"), node("py-numpy"), 1 { version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. +1 { version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-numpy", "python"), node("py-numpy"), 1 { version("py-numpy", "1.17.0"); version("py-numpy", "1.17.1"); version("py-numpy", "1.17.2"); version("py-numpy", "1.17.3"); version("py-numpy", "1.17.4"); version("py-numpy", "1.17.5"); version("py-numpy", "1.18.0"); version("py-numpy", "1.18.1"); version("py-numpy", "master") } 1. + + +%---------------------------------------------------------------------------- +% Package: py-packaging +%---------------------------------------------------------------------------- +version_declared("py-packaging", "19.2", 0). +version_declared("py-packaging", "19.1", 1). +version_declared("py-packaging", "17.1", 2). +version_declared("py-packaging", "16.8", 3). + +declared_dependency("py-packaging", "py-attrs", "build") :- node("py-packaging"), 1 { version("py-packaging", "16.8"); version("py-packaging", "17.1"); version("py-packaging", "19.1") } 1. +declared_dependency("py-packaging", "py-attrs", "run") :- node("py-packaging"), 1 { version("py-packaging", "16.8"); version("py-packaging", "17.1"); version("py-packaging", "19.1") } 1. +node("py-attrs") :- depends_on("py-packaging", "py-attrs"), node("py-packaging"), 1 { version("py-packaging", "16.8"); version("py-packaging", "17.1"); version("py-packaging", "19.1") } 1. + +declared_dependency("py-packaging", "py-pyparsing", "build"). +declared_dependency("py-packaging", "py-pyparsing", "run"). +node("py-pyparsing") :- depends_on("py-packaging", "py-pyparsing"), node("py-packaging"). + +declared_dependency("py-packaging", "py-six", "build"). +declared_dependency("py-packaging", "py-six", "run"). +node("py-six") :- depends_on("py-packaging", "py-six"), node("py-packaging"). + +declared_dependency("py-packaging", "python", "build"). +declared_dependency("py-packaging", "python", "link"). +declared_dependency("py-packaging", "python", "run"). +node("python") :- depends_on("py-packaging", "python"), node("py-packaging"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-packaging", "python"), node("py-packaging"). + + +%---------------------------------------------------------------------------- +% Package: py-pygments +%---------------------------------------------------------------------------- +version_declared("py-pygments", "2.4.2", 0). +version_declared("py-pygments", "2.3.1", 1). +version_declared("py-pygments", "2.2.0", 2). +version_declared("py-pygments", "2.1.3", 3). +version_declared("py-pygments", "2.0.2", 4). +version_declared("py-pygments", "2.0.1", 5). + +declared_dependency("py-pygments", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-pygments", "py-setuptools"), node("py-pygments"). + +declared_dependency("py-pygments", "python", "build"). +declared_dependency("py-pygments", "python", "link"). +declared_dependency("py-pygments", "python", "run"). +node("python") :- depends_on("py-pygments", "python"), node("py-pygments"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-pygments", "python"), node("py-pygments"). + + +%---------------------------------------------------------------------------- +% Package: py-pyparsing +%---------------------------------------------------------------------------- +version_declared("py-pyparsing", "2.4.2", 0). +version_declared("py-pyparsing", "2.3.1", 1). +version_declared("py-pyparsing", "2.2.0", 2). +version_declared("py-pyparsing", "2.1.10", 3). +version_declared("py-pyparsing", "2.0.3", 4). + +declared_dependency("py-pyparsing", "py-setuptools", "build") :- node("py-pyparsing"), 1 { version("py-pyparsing", "2.3.1"); version("py-pyparsing", "2.4.2") } 1. +node("py-setuptools") :- depends_on("py-pyparsing", "py-setuptools"), node("py-pyparsing"), 1 { version("py-pyparsing", "2.3.1"); version("py-pyparsing", "2.4.2") } 1. + +declared_dependency("py-pyparsing", "python", "build"). +declared_dependency("py-pyparsing", "python", "link"). +declared_dependency("py-pyparsing", "python", "run"). +node("python") :- depends_on("py-pyparsing", "python"), node("py-pyparsing"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-pyparsing", "python"), node("py-pyparsing"). + + +%---------------------------------------------------------------------------- +% Package: py-pytest-runner +%---------------------------------------------------------------------------- +version_declared("py-pytest-runner", "5.1", 0). +version_declared("py-pytest-runner", "2.11.1", 1). + +declared_dependency("py-pytest-runner", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-pytest-runner", "py-setuptools"), node("py-pytest-runner"). + +declared_dependency("py-pytest-runner", "py-setuptools-scm", "build"). +node("py-setuptools-scm") :- depends_on("py-pytest-runner", "py-setuptools-scm"), node("py-pytest-runner"). + +declared_dependency("py-pytest-runner", "python", "build"). +declared_dependency("py-pytest-runner", "python", "link"). +declared_dependency("py-pytest-runner", "python", "run"). +node("python") :- depends_on("py-pytest-runner", "python"), node("py-pytest-runner"). + + +%---------------------------------------------------------------------------- +% Package: py-pytz +%---------------------------------------------------------------------------- +version_declared("py-pytz", "2019.3", 0). +version_declared("py-pytz", "2018.4", 1). +version_declared("py-pytz", "2016.10", 2). +version_declared("py-pytz", "2016.6.1", 3). +version_declared("py-pytz", "2016.3", 4). +version_declared("py-pytz", "2015.4", 5). +version_declared("py-pytz", "2014.10", 6). +version_declared("py-pytz", "2014.9", 7). + +declared_dependency("py-pytz", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-pytz", "py-setuptools"), node("py-pytz"). + +declared_dependency("py-pytz", "python", "build"). +declared_dependency("py-pytz", "python", "link"). +declared_dependency("py-pytz", "python", "run"). +node("python") :- depends_on("py-pytz", "python"), node("py-pytz"). + + +%---------------------------------------------------------------------------- +% Package: py-requests +%---------------------------------------------------------------------------- +version_declared("py-requests", "2.22.0", 0). +version_declared("py-requests", "2.21.0", 1). +version_declared("py-requests", "2.14.2", 2). +version_declared("py-requests", "2.13.0", 3). +version_declared("py-requests", "2.11.1", 4). +version_declared("py-requests", "2.3.0", 5). + +declared_dependency("py-requests", "py-certifi", "build") :- node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +declared_dependency("py-requests", "py-certifi", "run") :- node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +node("py-certifi") :- depends_on("py-requests", "py-certifi"), node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +1 { version("py-certifi", "2017.4.17"); version("py-certifi", "2019.6.16"); version("py-certifi", "2019.9.11") } 1 :- depends_on("py-requests", "py-certifi"), node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. + +declared_dependency("py-requests", "py-chardet", "build") :- node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +declared_dependency("py-requests", "py-chardet", "run") :- node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +node("py-chardet") :- depends_on("py-requests", "py-chardet"), node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +1 { version("py-chardet", "3.0.2"); version("py-chardet", "3.0.4") } 1 :- depends_on("py-requests", "py-chardet"), node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. + +declared_dependency("py-requests", "py-idna", "build") :- node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +declared_dependency("py-requests", "py-idna", "run") :- node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +node("py-idna") :- depends_on("py-requests", "py-idna"), node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. + +declared_dependency("py-requests", "py-pysocks", "test"). +node("py-pysocks") :- depends_on("py-requests", "py-pysocks"), node("py-requests"). + +declared_dependency("py-requests", "py-pytest", "test"). +node("py-pytest") :- depends_on("py-requests", "py-pytest"), node("py-requests"). + +declared_dependency("py-requests", "py-pytest-cov", "test"). +node("py-pytest-cov") :- depends_on("py-requests", "py-pytest-cov"), node("py-requests"). + +declared_dependency("py-requests", "py-pytest-httpbin", "test"). +node("py-pytest-httpbin") :- depends_on("py-requests", "py-pytest-httpbin"), node("py-requests"). + +declared_dependency("py-requests", "py-pytest-mock", "test"). +node("py-pytest-mock") :- depends_on("py-requests", "py-pytest-mock"), node("py-requests"). + +declared_dependency("py-requests", "py-pytest-xdist", "test"). +node("py-pytest-xdist") :- depends_on("py-requests", "py-pytest-xdist"), node("py-requests"). + +declared_dependency("py-requests", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-requests", "py-setuptools"), node("py-requests"). + +declared_dependency("py-requests", "py-urllib3", "build") :- node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +declared_dependency("py-requests", "py-urllib3", "run") :- node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +node("py-urllib3") :- depends_on("py-requests", "py-urllib3"), node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. +1 { version("py-urllib3", "1.21.1"); version("py-urllib3", "1.25.6") } 1 :- depends_on("py-requests", "py-urllib3"), node("py-requests"), 1 { version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1. + +declared_dependency("py-requests", "python", "build"). +declared_dependency("py-requests", "python", "link"). +declared_dependency("py-requests", "python", "run"). +node("python") :- depends_on("py-requests", "python"), node("py-requests"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-requests", "python"), node("py-requests"). + + +%---------------------------------------------------------------------------- +% Package: py-setuptools +%---------------------------------------------------------------------------- +version_declared("py-setuptools", "41.4.0", 0). +version_declared("py-setuptools", "41.0.1", 1). +version_declared("py-setuptools", "40.8.0", 2). +version_declared("py-setuptools", "40.4.3", 3). +version_declared("py-setuptools", "40.2.0", 4). +version_declared("py-setuptools", "39.2.0", 5). +version_declared("py-setuptools", "39.0.1", 6). +version_declared("py-setuptools", "35.0.2", 7). +version_declared("py-setuptools", "34.4.1", 8). +version_declared("py-setuptools", "34.2.0", 9). +version_declared("py-setuptools", "25.2.0", 10). +version_declared("py-setuptools", "20.7.0", 11). +version_declared("py-setuptools", "20.6.7", 12). +version_declared("py-setuptools", "19.2", 13). +version_declared("py-setuptools", "18.1", 14). +version_declared("py-setuptools", "16.0", 15). +version_declared("py-setuptools", "11.3.1", 16). + +declared_dependency("py-setuptools", "py-appdirs", "build") :- node("py-setuptools"), 1 { version("py-setuptools", "34.2.0"); version("py-setuptools", "34.4.1"); version("py-setuptools", "35.0.2") } 1. +declared_dependency("py-setuptools", "py-appdirs", "run") :- node("py-setuptools"), 1 { version("py-setuptools", "34.2.0"); version("py-setuptools", "34.4.1"); version("py-setuptools", "35.0.2") } 1. +node("py-appdirs") :- depends_on("py-setuptools", "py-appdirs"), node("py-setuptools"), 1 { version("py-setuptools", "34.2.0"); version("py-setuptools", "34.4.1"); version("py-setuptools", "35.0.2") } 1. + +declared_dependency("py-setuptools", "py-packaging", "build") :- node("py-setuptools"), 1 { version("py-setuptools", "34.2.0"); version("py-setuptools", "34.4.1"); version("py-setuptools", "35.0.2") } 1. +declared_dependency("py-setuptools", "py-packaging", "run") :- node("py-setuptools"), 1 { version("py-setuptools", "34.2.0"); version("py-setuptools", "34.4.1"); version("py-setuptools", "35.0.2") } 1. +node("py-packaging") :- depends_on("py-setuptools", "py-packaging"), node("py-setuptools"), 1 { version("py-setuptools", "34.2.0"); version("py-setuptools", "34.4.1"); version("py-setuptools", "35.0.2") } 1. + +declared_dependency("py-setuptools", "py-six", "build") :- node("py-setuptools"), 1 { version("py-setuptools", "34.2.0"); version("py-setuptools", "34.4.1"); version("py-setuptools", "35.0.2") } 1. +declared_dependency("py-setuptools", "py-six", "run") :- node("py-setuptools"), 1 { version("py-setuptools", "34.2.0"); version("py-setuptools", "34.4.1"); version("py-setuptools", "35.0.2") } 1. +node("py-six") :- depends_on("py-setuptools", "py-six"), node("py-setuptools"), 1 { version("py-setuptools", "34.2.0"); version("py-setuptools", "34.4.1"); version("py-setuptools", "35.0.2") } 1. + +declared_dependency("py-setuptools", "python", "build"). +declared_dependency("py-setuptools", "python", "link"). +declared_dependency("py-setuptools", "python", "run"). +node("python") :- depends_on("py-setuptools", "python"), node("py-setuptools"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-setuptools", "python"), node("py-setuptools"). + + +%---------------------------------------------------------------------------- +% Package: py-setuptools-scm +%---------------------------------------------------------------------------- +version_declared("py-setuptools-scm", "3.3.3", 0). +version_declared("py-setuptools-scm", "3.1.0", 1). +version_declared("py-setuptools-scm", "1.15.6", 2). + +declared_dependency("py-setuptools-scm", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-setuptools-scm", "py-setuptools"), node("py-setuptools-scm"). + +declared_dependency("py-setuptools-scm", "python", "build"). +declared_dependency("py-setuptools-scm", "python", "link"). +declared_dependency("py-setuptools-scm", "python", "run"). +node("python") :- depends_on("py-setuptools-scm", "python"), node("py-setuptools-scm"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-setuptools-scm", "python"), node("py-setuptools-scm"). + + +%---------------------------------------------------------------------------- +% Package: py-six +%---------------------------------------------------------------------------- +version_declared("py-six", "1.12.0", 0). +version_declared("py-six", "1.11.0", 1). +version_declared("py-six", "1.10.0", 2). +version_declared("py-six", "1.9.0", 3). +version_declared("py-six", "1.8.0", 4). + +declared_dependency("py-six", "python", "build"). +declared_dependency("py-six", "python", "link"). +declared_dependency("py-six", "python", "run"). +node("python") :- depends_on("py-six", "python"), node("py-six"). + + +%---------------------------------------------------------------------------- +% Package: py-snowballstemmer +%---------------------------------------------------------------------------- +version_declared("py-snowballstemmer", "2.0.0", 0). +version_declared("py-snowballstemmer", "1.2.1", 1). + +declared_dependency("py-snowballstemmer", "py-setuptools", "build") :- node("py-snowballstemmer"), 1 { version("py-snowballstemmer", "2.0.0") } 1. +node("py-setuptools") :- depends_on("py-snowballstemmer", "py-setuptools"), node("py-snowballstemmer"), 1 { version("py-snowballstemmer", "2.0.0") } 1. + +declared_dependency("py-snowballstemmer", "python", "build"). +declared_dependency("py-snowballstemmer", "python", "link"). +declared_dependency("py-snowballstemmer", "python", "run"). +node("python") :- depends_on("py-snowballstemmer", "python"), node("py-snowballstemmer"). + + +%---------------------------------------------------------------------------- +% Package: py-sphinx +%---------------------------------------------------------------------------- +version_declared("py-sphinx", "2.2.0", 0). +version_declared("py-sphinx", "1.8.4", 1). +version_declared("py-sphinx", "1.8.2", 2). +version_declared("py-sphinx", "1.7.4", 3). +version_declared("py-sphinx", "1.6.3", 4). +version_declared("py-sphinx", "1.6.1", 5). +version_declared("py-sphinx", "1.5.5", 6). +version_declared("py-sphinx", "1.4.5", 7). +version_declared("py-sphinx", "1.3.1", 8). + +declared_dependency("py-sphinx", "py-alabaster", "build"). +declared_dependency("py-sphinx", "py-alabaster", "run"). +node("py-alabaster") :- depends_on("py-sphinx", "py-alabaster"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-babel", "build"). +declared_dependency("py-sphinx", "py-babel", "run"). +node("py-babel") :- depends_on("py-sphinx", "py-babel"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-docutils", "build"). +declared_dependency("py-sphinx", "py-docutils", "run"). +node("py-docutils") :- depends_on("py-sphinx", "py-docutils"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-docutils-stubs", "test"). +node("py-docutils-stubs") :- depends_on("py-sphinx", "py-docutils-stubs"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-flake8", "test"). +node("py-flake8") :- depends_on("py-sphinx", "py-flake8"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-flake8-import-order", "test"). +node("py-flake8-import-order") :- depends_on("py-sphinx", "py-flake8-import-order"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-html5lib", "test"). +node("py-html5lib") :- depends_on("py-sphinx", "py-html5lib"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-imagesize", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4"); version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "py-imagesize", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4"); version("py-sphinx", "2.2.0") } 1. +node("py-imagesize") :- depends_on("py-sphinx", "py-imagesize"), node("py-sphinx"), 1 { version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4"); version("py-sphinx", "2.2.0") } 1. + +declared_dependency("py-sphinx", "py-jinja2", "build"). +declared_dependency("py-sphinx", "py-jinja2", "run"). +node("py-jinja2") :- depends_on("py-sphinx", "py-jinja2"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-mypy", "test"). +node("py-mypy") :- depends_on("py-sphinx", "py-mypy"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-packaging", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4"); version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "py-packaging", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4"); version("py-sphinx", "2.2.0") } 1. +node("py-packaging") :- depends_on("py-sphinx", "py-packaging"), node("py-sphinx"), 1 { version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4"); version("py-sphinx", "2.2.0") } 1. + +declared_dependency("py-sphinx", "py-pygments", "build"). +declared_dependency("py-sphinx", "py-pygments", "run"). +node("py-pygments") :- depends_on("py-sphinx", "py-pygments"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-pytest", "test"). +node("py-pytest") :- depends_on("py-sphinx", "py-pytest"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-pytest-cov", "test"). +node("py-pytest-cov") :- depends_on("py-sphinx", "py-pytest-cov"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-requests", "build"). +declared_dependency("py-sphinx", "py-requests", "run"). +node("py-requests") :- depends_on("py-sphinx", "py-requests"), node("py-sphinx"). +1 { version("py-requests", "2.11.1"); version("py-requests", "2.13.0"); version("py-requests", "2.14.2"); version("py-requests", "2.21.0"); version("py-requests", "2.22.0") } 1 :- depends_on("py-sphinx", "py-requests"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-setuptools", "build"). +declared_dependency("py-sphinx", "py-setuptools", "run"). +node("py-setuptools") :- depends_on("py-sphinx", "py-setuptools"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-six", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "1.3.1"); version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. +declared_dependency("py-sphinx", "py-six", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "1.3.1"); version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. +node("py-six") :- depends_on("py-sphinx", "py-six"), node("py-sphinx"), 1 { version("py-sphinx", "1.3.1"); version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. + +declared_dependency("py-sphinx", "py-snowballstemmer", "build"). +declared_dependency("py-sphinx", "py-snowballstemmer", "run"). +node("py-snowballstemmer") :- depends_on("py-sphinx", "py-snowballstemmer"), node("py-sphinx"). + +declared_dependency("py-sphinx", "py-sphinx-rtd-theme", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "1.3.1") } 1. +declared_dependency("py-sphinx", "py-sphinx-rtd-theme", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "1.3.1") } 1. +node("py-sphinx-rtd-theme") :- depends_on("py-sphinx", "py-sphinx-rtd-theme"), node("py-sphinx"), 1 { version("py-sphinx", "1.3.1") } 1. + +declared_dependency("py-sphinx", "py-sphinxcontrib-applehelp", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "py-sphinxcontrib-applehelp", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +node("py-sphinxcontrib-applehelp") :- depends_on("py-sphinx", "py-sphinxcontrib-applehelp"), node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. + +declared_dependency("py-sphinx", "py-sphinxcontrib-devhelp", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "py-sphinxcontrib-devhelp", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +node("py-sphinxcontrib-devhelp") :- depends_on("py-sphinx", "py-sphinxcontrib-devhelp"), node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. + +declared_dependency("py-sphinx", "py-sphinxcontrib-htmlhelp", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "py-sphinxcontrib-htmlhelp", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +node("py-sphinxcontrib-htmlhelp") :- depends_on("py-sphinx", "py-sphinxcontrib-htmlhelp"), node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. + +declared_dependency("py-sphinx", "py-sphinxcontrib-jsmath", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "py-sphinxcontrib-jsmath", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +node("py-sphinxcontrib-jsmath") :- depends_on("py-sphinx", "py-sphinxcontrib-jsmath"), node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. + +declared_dependency("py-sphinx", "py-sphinxcontrib-qthelp", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "py-sphinxcontrib-qthelp", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +node("py-sphinxcontrib-qthelp") :- depends_on("py-sphinx", "py-sphinxcontrib-qthelp"), node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. + +declared_dependency("py-sphinx", "py-sphinxcontrib-serializinghtml", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "py-sphinxcontrib-serializinghtml", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +node("py-sphinxcontrib-serializinghtml") :- depends_on("py-sphinx", "py-sphinxcontrib-serializinghtml"), node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. + +declared_dependency("py-sphinx", "py-sphinxcontrib-websupport", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. +declared_dependency("py-sphinx", "py-sphinxcontrib-websupport", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. +node("py-sphinxcontrib-websupport") :- depends_on("py-sphinx", "py-sphinxcontrib-websupport"), node("py-sphinx"), 1 { version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. + +declared_dependency("py-sphinx", "py-typing", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "1.6.1") } 1. +declared_dependency("py-sphinx", "py-typing", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "1.6.1") } 1. +node("py-typing") :- depends_on("py-sphinx", "py-typing"), node("py-sphinx"), 1 { version("py-sphinx", "1.6.1") } 1. +declared_dependency("py-sphinx", "py-typing", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4"); version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "py-typing", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4"); version("py-sphinx", "2.2.0") } 1. +node("py-typing") :- depends_on("py-sphinx", "py-typing"), node("py-sphinx"), 1 { version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4"); version("py-sphinx", "2.2.0") } 1. + +declared_dependency("py-sphinx", "python", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "1.3.1"); version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. +declared_dependency("py-sphinx", "python", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "1.3.1"); version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. +node("python") :- depends_on("py-sphinx", "python"), node("py-sphinx"), 1 { version("py-sphinx", "1.3.1"); version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-sphinx", "python"), node("py-sphinx"), 1 { version("py-sphinx", "1.3.1"); version("py-sphinx", "1.4.5"); version("py-sphinx", "1.5.5"); version("py-sphinx", "1.6.1"); version("py-sphinx", "1.6.3"); version("py-sphinx", "1.7.4"); version("py-sphinx", "1.8.2"); version("py-sphinx", "1.8.4") } 1. +declared_dependency("py-sphinx", "python", "build"). +declared_dependency("py-sphinx", "python", "link"). +declared_dependency("py-sphinx", "python", "run"). +node("python") :- depends_on("py-sphinx", "python"), node("py-sphinx"). +declared_dependency("py-sphinx", "python", "build") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +declared_dependency("py-sphinx", "python", "run") :- node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +node("python") :- depends_on("py-sphinx", "python"), node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. +1 { version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-sphinx", "python"), node("py-sphinx"), 1 { version("py-sphinx", "2.2.0") } 1. + + +%---------------------------------------------------------------------------- +% Package: py-sphinx-rtd-theme +%---------------------------------------------------------------------------- +version_declared("py-sphinx-rtd-theme", "0.4.3", 0). +version_declared("py-sphinx-rtd-theme", "0.2.5b1", 1). +version_declared("py-sphinx-rtd-theme", "0.1.10a0", 2). + +declared_dependency("py-sphinx-rtd-theme", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-sphinx-rtd-theme", "py-setuptools"), node("py-sphinx-rtd-theme"). + +declared_dependency("py-sphinx-rtd-theme", "python", "build"). +declared_dependency("py-sphinx-rtd-theme", "python", "link"). +declared_dependency("py-sphinx-rtd-theme", "python", "run"). +node("python") :- depends_on("py-sphinx-rtd-theme", "python"), node("py-sphinx-rtd-theme"). + + +%---------------------------------------------------------------------------- +% Package: py-sphinxcontrib-applehelp +%---------------------------------------------------------------------------- +version_declared("py-sphinxcontrib-applehelp", "1.0.1", 0). + +declared_dependency("py-sphinxcontrib-applehelp", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-sphinxcontrib-applehelp", "py-setuptools"), node("py-sphinxcontrib-applehelp"). + +declared_dependency("py-sphinxcontrib-applehelp", "python", "build"). +declared_dependency("py-sphinxcontrib-applehelp", "python", "link"). +declared_dependency("py-sphinxcontrib-applehelp", "python", "run"). +node("python") :- depends_on("py-sphinxcontrib-applehelp", "python"), node("py-sphinxcontrib-applehelp"). +1 { version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-sphinxcontrib-applehelp", "python"), node("py-sphinxcontrib-applehelp"). + + +%---------------------------------------------------------------------------- +% Package: py-sphinxcontrib-devhelp +%---------------------------------------------------------------------------- +version_declared("py-sphinxcontrib-devhelp", "1.0.1", 0). + +declared_dependency("py-sphinxcontrib-devhelp", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-sphinxcontrib-devhelp", "py-setuptools"), node("py-sphinxcontrib-devhelp"). + +declared_dependency("py-sphinxcontrib-devhelp", "python", "build"). +declared_dependency("py-sphinxcontrib-devhelp", "python", "link"). +declared_dependency("py-sphinxcontrib-devhelp", "python", "run"). +node("python") :- depends_on("py-sphinxcontrib-devhelp", "python"), node("py-sphinxcontrib-devhelp"). +1 { version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-sphinxcontrib-devhelp", "python"), node("py-sphinxcontrib-devhelp"). + + +%---------------------------------------------------------------------------- +% Package: py-sphinxcontrib-htmlhelp +%---------------------------------------------------------------------------- +version_declared("py-sphinxcontrib-htmlhelp", "1.0.2", 0). + +declared_dependency("py-sphinxcontrib-htmlhelp", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-sphinxcontrib-htmlhelp", "py-setuptools"), node("py-sphinxcontrib-htmlhelp"). + +declared_dependency("py-sphinxcontrib-htmlhelp", "python", "build"). +declared_dependency("py-sphinxcontrib-htmlhelp", "python", "link"). +declared_dependency("py-sphinxcontrib-htmlhelp", "python", "run"). +node("python") :- depends_on("py-sphinxcontrib-htmlhelp", "python"), node("py-sphinxcontrib-htmlhelp"). +1 { version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-sphinxcontrib-htmlhelp", "python"), node("py-sphinxcontrib-htmlhelp"). + + +%---------------------------------------------------------------------------- +% Package: py-sphinxcontrib-jsmath +%---------------------------------------------------------------------------- +version_declared("py-sphinxcontrib-jsmath", "1.0.1", 0). + +declared_dependency("py-sphinxcontrib-jsmath", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-sphinxcontrib-jsmath", "py-setuptools"), node("py-sphinxcontrib-jsmath"). + +declared_dependency("py-sphinxcontrib-jsmath", "python", "build"). +declared_dependency("py-sphinxcontrib-jsmath", "python", "link"). +declared_dependency("py-sphinxcontrib-jsmath", "python", "run"). +node("python") :- depends_on("py-sphinxcontrib-jsmath", "python"), node("py-sphinxcontrib-jsmath"). +1 { version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-sphinxcontrib-jsmath", "python"), node("py-sphinxcontrib-jsmath"). + + +%---------------------------------------------------------------------------- +% Package: py-sphinxcontrib-qthelp +%---------------------------------------------------------------------------- +version_declared("py-sphinxcontrib-qthelp", "1.0.2", 0). + +declared_dependency("py-sphinxcontrib-qthelp", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-sphinxcontrib-qthelp", "py-setuptools"), node("py-sphinxcontrib-qthelp"). + +declared_dependency("py-sphinxcontrib-qthelp", "python", "build"). +declared_dependency("py-sphinxcontrib-qthelp", "python", "link"). +declared_dependency("py-sphinxcontrib-qthelp", "python", "run"). +node("python") :- depends_on("py-sphinxcontrib-qthelp", "python"), node("py-sphinxcontrib-qthelp"). +1 { version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-sphinxcontrib-qthelp", "python"), node("py-sphinxcontrib-qthelp"). + + +%---------------------------------------------------------------------------- +% Package: py-sphinxcontrib-serializinghtml +%---------------------------------------------------------------------------- +version_declared("py-sphinxcontrib-serializinghtml", "1.1.3", 0). + +declared_dependency("py-sphinxcontrib-serializinghtml", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-sphinxcontrib-serializinghtml", "py-setuptools"), node("py-sphinxcontrib-serializinghtml"). + +declared_dependency("py-sphinxcontrib-serializinghtml", "python", "build"). +declared_dependency("py-sphinxcontrib-serializinghtml", "python", "link"). +declared_dependency("py-sphinxcontrib-serializinghtml", "python", "run"). +node("python") :- depends_on("py-sphinxcontrib-serializinghtml", "python"), node("py-sphinxcontrib-serializinghtml"). +1 { version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-sphinxcontrib-serializinghtml", "python"), node("py-sphinxcontrib-serializinghtml"). + + +%---------------------------------------------------------------------------- +% Package: py-sphinxcontrib-websupport +%---------------------------------------------------------------------------- +version_declared("py-sphinxcontrib-websupport", "1.1.2", 0). +version_declared("py-sphinxcontrib-websupport", "1.1.0", 1). +version_declared("py-sphinxcontrib-websupport", "1.0.1", 2). + +declared_dependency("py-sphinxcontrib-websupport", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-sphinxcontrib-websupport", "py-setuptools"), node("py-sphinxcontrib-websupport"). + +declared_dependency("py-sphinxcontrib-websupport", "python", "build"). +declared_dependency("py-sphinxcontrib-websupport", "python", "link"). +declared_dependency("py-sphinxcontrib-websupport", "python", "run"). +node("python") :- depends_on("py-sphinxcontrib-websupport", "python"), node("py-sphinxcontrib-websupport"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-sphinxcontrib-websupport", "python"), node("py-sphinxcontrib-websupport"). + + +%---------------------------------------------------------------------------- +% Package: py-typing +%---------------------------------------------------------------------------- +version_declared("py-typing", "3.7.4.1", 0). +version_declared("py-typing", "3.6.4", 1). +version_declared("py-typing", "3.6.1", 2). + +declared_dependency("py-typing", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-typing", "py-setuptools"), node("py-typing"). + +declared_dependency("py-typing", "python", "build"). +declared_dependency("py-typing", "python", "link"). +declared_dependency("py-typing", "python", "run"). +node("python") :- depends_on("py-typing", "python"), node("py-typing"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-typing", "python"), node("py-typing"). + + +%---------------------------------------------------------------------------- +% Package: py-urllib3 +%---------------------------------------------------------------------------- +version_declared("py-urllib3", "1.25.6", 0). +version_declared("py-urllib3", "1.21.1", 1). +version_declared("py-urllib3", "1.20", 2). +version_declared("py-urllib3", "1.14", 3). + +declared_dependency("py-urllib3", "py-mock", "test"). +node("py-mock") :- depends_on("py-urllib3", "py-mock"), node("py-urllib3"). + +declared_dependency("py-urllib3", "py-pytest", "test"). +node("py-pytest") :- depends_on("py-urllib3", "py-pytest"), node("py-urllib3"). + +declared_dependency("py-urllib3", "py-setuptools", "build"). +node("py-setuptools") :- depends_on("py-urllib3", "py-setuptools"), node("py-urllib3"). + +declared_dependency("py-urllib3", "py-tornado", "test"). +node("py-tornado") :- depends_on("py-urllib3", "py-tornado"), node("py-urllib3"). + +declared_dependency("py-urllib3", "python", "build"). +declared_dependency("py-urllib3", "python", "link"). +declared_dependency("py-urllib3", "python", "run"). +node("python") :- depends_on("py-urllib3", "python"), node("py-urllib3"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("py-urllib3", "python"), node("py-urllib3"). + + +%---------------------------------------------------------------------------- +% Package: python +%---------------------------------------------------------------------------- +version_declared("python", "3.7.6", 0). +version_declared("python", "3.8.1", 1). +version_declared("python", "3.8.0", 2). +version_declared("python", "3.7.5", 3). +version_declared("python", "3.7.4", 4). +version_declared("python", "3.7.3", 5). +version_declared("python", "3.7.2", 6). +version_declared("python", "3.7.1", 7). +version_declared("python", "3.7.0", 8). +version_declared("python", "3.6.8", 9). +version_declared("python", "3.6.7", 10). +version_declared("python", "3.6.6", 11). +version_declared("python", "3.6.5", 12). +version_declared("python", "3.6.4", 13). +version_declared("python", "3.6.3", 14). +version_declared("python", "3.6.2", 15). +version_declared("python", "3.6.1", 16). +version_declared("python", "3.6.0", 17). +version_declared("python", "3.5.7", 18). +version_declared("python", "3.5.2", 19). +version_declared("python", "3.5.1", 20). +version_declared("python", "3.5.0", 21). +version_declared("python", "3.4.10", 22). +version_declared("python", "3.4.3", 23). +version_declared("python", "3.3.6", 24). +version_declared("python", "3.2.6", 25). +version_declared("python", "3.1.5", 26). +version_declared("python", "2.7.16", 27). +version_declared("python", "2.7.15", 28). +version_declared("python", "2.7.14", 29). +version_declared("python", "2.7.13", 30). +version_declared("python", "2.7.12", 31). +version_declared("python", "2.7.11", 32). +version_declared("python", "2.7.10", 33). +version_declared("python", "2.7.9", 34). +version_declared("python", "2.7.8", 35). + +variant("python", "bz2"). +variant_single_value("python", "bz2"). +variant_default_value("python", "bz2", "True"). +variant_possible_value("python", "bz2", "False"). +variant_possible_value("python", "bz2", "True"). + +variant("python", "ctypes"). +variant_single_value("python", "ctypes"). +variant_default_value("python", "ctypes", "True"). +variant_possible_value("python", "ctypes", "False"). +variant_possible_value("python", "ctypes", "True"). + +variant("python", "dbm"). +variant_single_value("python", "dbm"). +variant_default_value("python", "dbm", "True"). +variant_possible_value("python", "dbm", "False"). +variant_possible_value("python", "dbm", "True"). + +variant("python", "debug"). +variant_single_value("python", "debug"). +variant_default_value("python", "debug", "False"). +variant_possible_value("python", "debug", "False"). +variant_possible_value("python", "debug", "True"). + +variant("python", "libxml2"). +variant_single_value("python", "libxml2"). +variant_default_value("python", "libxml2", "True"). +variant_possible_value("python", "libxml2", "False"). +variant_possible_value("python", "libxml2", "True"). + +variant("python", "lzma"). +variant_single_value("python", "lzma"). +variant_default_value("python", "lzma", "True"). +variant_possible_value("python", "lzma", "False"). +variant_possible_value("python", "lzma", "True"). + +variant("python", "nis"). +variant_single_value("python", "nis"). +variant_default_value("python", "nis", "False"). +variant_possible_value("python", "nis", "False"). +variant_possible_value("python", "nis", "True"). + +variant("python", "optimizations"). +variant_single_value("python", "optimizations"). +variant_default_value("python", "optimizations", "False"). +variant_possible_value("python", "optimizations", "False"). +variant_possible_value("python", "optimizations", "True"). + +variant("python", "pic"). +variant_single_value("python", "pic"). +variant_default_value("python", "pic", "True"). +variant_possible_value("python", "pic", "False"). +variant_possible_value("python", "pic", "True"). + +variant("python", "pyexpat"). +variant_single_value("python", "pyexpat"). +variant_default_value("python", "pyexpat", "True"). +variant_possible_value("python", "pyexpat", "False"). +variant_possible_value("python", "pyexpat", "True"). + +variant("python", "pythoncmd"). +variant_single_value("python", "pythoncmd"). +variant_default_value("python", "pythoncmd", "True"). +variant_possible_value("python", "pythoncmd", "False"). +variant_possible_value("python", "pythoncmd", "True"). + +variant("python", "readline"). +variant_single_value("python", "readline"). +variant_default_value("python", "readline", "True"). +variant_possible_value("python", "readline", "False"). +variant_possible_value("python", "readline", "True"). + +variant("python", "shared"). +variant_single_value("python", "shared"). +variant_default_value("python", "shared", "False"). +variant_possible_value("python", "shared", "False"). +variant_possible_value("python", "shared", "True"). + +variant("python", "sqlite3"). +variant_single_value("python", "sqlite3"). +variant_default_value("python", "sqlite3", "True"). +variant_possible_value("python", "sqlite3", "False"). +variant_possible_value("python", "sqlite3", "True"). + +variant("python", "ssl"). +variant_single_value("python", "ssl"). +variant_default_value("python", "ssl", "True"). +variant_possible_value("python", "ssl", "False"). +variant_possible_value("python", "ssl", "True"). + +variant("python", "tix"). +variant_single_value("python", "tix"). +variant_default_value("python", "tix", "False"). +variant_possible_value("python", "tix", "False"). +variant_possible_value("python", "tix", "True"). + +variant("python", "tkinter"). +variant_single_value("python", "tkinter"). +variant_default_value("python", "tkinter", "False"). +variant_possible_value("python", "tkinter", "False"). +variant_possible_value("python", "tkinter", "True"). + +variant("python", "ucs4"). +variant_single_value("python", "ucs4"). +variant_default_value("python", "ucs4", "False"). +variant_possible_value("python", "ucs4", "False"). +variant_possible_value("python", "ucs4", "True"). + +variant("python", "uuid"). +variant_single_value("python", "uuid"). +variant_default_value("python", "uuid", "False"). +variant_possible_value("python", "uuid", "False"). +variant_possible_value("python", "uuid", "True"). + +variant("python", "zlib"). +variant_single_value("python", "zlib"). +variant_default_value("python", "zlib", "True"). +variant_possible_value("python", "zlib", "False"). +variant_possible_value("python", "zlib", "True"). + +declared_dependency("python", "bzip2", "build") :- node("python"), variant_value("python", "bz2", "True"). +declared_dependency("python", "bzip2", "link") :- node("python"), variant_value("python", "bz2", "True"). +node("bzip2") :- depends_on("python", "bzip2"), node("python"), variant_value("python", "bz2", "True"). + +declared_dependency("python", "expat", "build") :- node("python"), variant_value("python", "pyexpat", "True"). +declared_dependency("python", "expat", "link") :- node("python"), variant_value("python", "pyexpat", "True"). +node("expat") :- depends_on("python", "expat"), node("python"), variant_value("python", "pyexpat", "True"). + +declared_dependency("python", "gdbm", "build") :- node("python"), variant_value("python", "dbm", "True"). +declared_dependency("python", "gdbm", "link") :- node("python"), variant_value("python", "dbm", "True"). +node("gdbm") :- depends_on("python", "gdbm"), node("python"), variant_value("python", "dbm", "True"). + +declared_dependency("python", "gettext", "build") :- node("python"), variant_value("python", "libxml2", "False"). +declared_dependency("python", "gettext", "link") :- node("python"), variant_value("python", "libxml2", "False"). +node("gettext") :- depends_on("python", "gettext"), node("python"), variant_value("python", "libxml2", "False"). +variant_set("gettext", "libxml2", "False") :- depends_on("python", "gettext"), node("python"), variant_value("python", "libxml2", "False"). +declared_dependency("python", "gettext", "build") :- node("python"), variant_value("python", "libxml2", "True"). +declared_dependency("python", "gettext", "link") :- node("python"), variant_value("python", "libxml2", "True"). +node("gettext") :- depends_on("python", "gettext"), node("python"), variant_value("python", "libxml2", "True"). +variant_set("gettext", "libxml2", "True") :- depends_on("python", "gettext"), node("python"), variant_value("python", "libxml2", "True"). + +declared_dependency("python", "libffi", "build") :- node("python"), variant_value("python", "ctypes", "True"). +declared_dependency("python", "libffi", "link") :- node("python"), variant_value("python", "ctypes", "True"). +node("libffi") :- depends_on("python", "libffi"), node("python"), variant_value("python", "ctypes", "True"). + +declared_dependency("python", "libnsl", "build") :- node("python"), variant_value("python", "nis", "True"). +declared_dependency("python", "libnsl", "link") :- node("python"), variant_value("python", "nis", "True"). +node("libnsl") :- depends_on("python", "libnsl"), node("python"), variant_value("python", "nis", "True"). + +declared_dependency("python", "ncurses", "build") :- node("python"), variant_value("python", "readline", "True"). +declared_dependency("python", "ncurses", "link") :- node("python"), variant_value("python", "readline", "True"). +node("ncurses") :- depends_on("python", "ncurses"), node("python"), variant_value("python", "readline", "True"). + +declared_dependency("python", "openssl", "build") :- node("python"), variant_value("python", "ssl", "True"). +declared_dependency("python", "openssl", "link") :- node("python"), variant_value("python", "ssl", "True"). +node("openssl") :- depends_on("python", "openssl"), node("python"), variant_value("python", "ssl", "True"). +declared_dependency("python", "openssl", "build") :- node("python"), 1 { version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "ssl", "True"). +declared_dependency("python", "openssl", "link") :- node("python"), 1 { version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "ssl", "True"). +node("openssl") :- depends_on("python", "openssl"), node("python"), 1 { version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "ssl", "True"). +1 { version("openssl", "1.0.2d"); version("openssl", "1.0.2e"); version("openssl", "1.0.2f"); version("openssl", "1.0.2g"); version("openssl", "1.0.2h"); version("openssl", "1.0.2i"); version("openssl", "1.0.2j"); version("openssl", "1.0.2k"); version("openssl", "1.0.2m"); version("openssl", "1.0.2n"); version("openssl", "1.0.2o"); version("openssl", "1.0.2p"); version("openssl", "1.0.2r"); version("openssl", "1.0.2s"); version("openssl", "1.0.2t"); version("openssl", "1.1.0c"); version("openssl", "1.1.0d"); version("openssl", "1.1.0e"); version("openssl", "1.1.0g"); version("openssl", "1.1.0i"); version("openssl", "1.1.0j"); version("openssl", "1.1.0k"); version("openssl", "1.1.0l"); version("openssl", "1.1.1"); version("openssl", "1.1.1a"); version("openssl", "1.1.1b"); version("openssl", "1.1.1c"); version("openssl", "1.1.1d") } 1 :- depends_on("python", "openssl"), node("python"), 1 { version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "ssl", "True"). + +declared_dependency("python", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("python", "pkgconfig"), node("python"). + +declared_dependency("python", "readline", "build") :- node("python"), variant_value("python", "readline", "True"). +declared_dependency("python", "readline", "link") :- node("python"), variant_value("python", "readline", "True"). +node("readline") :- depends_on("python", "readline"), node("python"), variant_value("python", "readline", "True"). + +declared_dependency("python", "sqlite", "build") :- node("python"), variant_value("python", "sqlite3", "True"). +declared_dependency("python", "sqlite", "link") :- node("python"), variant_value("python", "sqlite3", "True"). +node("sqlite") :- depends_on("python", "sqlite"), node("python"), variant_value("python", "sqlite3", "True"). + +declared_dependency("python", "tcl", "build") :- node("python"), variant_value("python", "tkinter", "True"). +declared_dependency("python", "tcl", "link") :- node("python"), variant_value("python", "tkinter", "True"). +node("tcl") :- depends_on("python", "tcl"), node("python"), variant_value("python", "tkinter", "True"). + +declared_dependency("python", "tix", "build") :- node("python"), variant_value("python", "tix", "True"). +declared_dependency("python", "tix", "link") :- node("python"), variant_value("python", "tix", "True"). +node("tix") :- depends_on("python", "tix"), node("python"), variant_value("python", "tix", "True"). + +declared_dependency("python", "tk", "build") :- node("python"), variant_value("python", "tkinter", "True"). +declared_dependency("python", "tk", "link") :- node("python"), variant_value("python", "tkinter", "True"). +node("tk") :- depends_on("python", "tk"), node("python"), variant_value("python", "tkinter", "True"). + +declared_dependency("python", "xz", "build") :- node("python"), 1 { version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "lzma", "True"). +declared_dependency("python", "xz", "link") :- node("python"), 1 { version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "lzma", "True"). +node("xz") :- depends_on("python", "xz"), node("python"), 1 { version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1, variant_value("python", "lzma", "True"). + +declared_dependency("python", "zlib", "build") :- node("python"), variant_value("python", "zlib", "True"). +declared_dependency("python", "zlib", "link") :- node("python"), variant_value("python", "zlib", "True"). +node("zlib") :- depends_on("python", "zlib"), node("python"), variant_value("python", "zlib", "True"). + + +%---------------------------------------------------------------------------- +% Package: qt +%---------------------------------------------------------------------------- +version_declared("qt", "5.14.1", 0). +version_declared("qt", "5.14.0", 1). +version_declared("qt", "5.13.1", 2). +version_declared("qt", "5.12.5", 3). +version_declared("qt", "5.12.2", 4). +version_declared("qt", "5.11.3", 5). +version_declared("qt", "5.11.2", 6). +version_declared("qt", "5.10.0", 7). +version_declared("qt", "5.9.1", 8). +version_declared("qt", "5.9.0", 9). +version_declared("qt", "5.8.0", 10). +version_declared("qt", "5.7.1", 11). +version_declared("qt", "5.7.0", 12). +version_declared("qt", "5.5.1", 13). +version_declared("qt", "5.4.2", 14). +version_declared("qt", "5.4.0", 15). +version_declared("qt", "5.3.2", 16). +version_declared("qt", "5.2.1", 17). +version_declared("qt", "4.8.7", 18). +version_declared("qt", "4.8.6", 19). +version_declared("qt", "4.8.5", 20). +version_declared("qt", "3.3.8b", 21). + +variant("qt", "dbus"). +variant_single_value("qt", "dbus"). +variant_default_value("qt", "dbus", "False"). +variant_possible_value("qt", "dbus", "False"). +variant_possible_value("qt", "dbus", "True"). + +variant("qt", "examples"). +variant_single_value("qt", "examples"). +variant_default_value("qt", "examples", "False"). +variant_possible_value("qt", "examples", "False"). +variant_possible_value("qt", "examples", "True"). + +variant("qt", "framework"). +variant_single_value("qt", "framework"). +variant_default_value("qt", "framework", "True"). +variant_possible_value("qt", "framework", "False"). +variant_possible_value("qt", "framework", "True"). + +variant("qt", "freetype"). +variant_single_value("qt", "freetype"). +variant_default_value("qt", "freetype", "spack"). +variant_possible_value("qt", "freetype", "none"). +variant_possible_value("qt", "freetype", "qt"). +variant_possible_value("qt", "freetype", "spack"). + +variant("qt", "gtk"). +variant_single_value("qt", "gtk"). +variant_default_value("qt", "gtk", "False"). +variant_possible_value("qt", "gtk", "False"). +variant_possible_value("qt", "gtk", "True"). + +variant("qt", "krellpatch"). +variant_single_value("qt", "krellpatch"). +variant_default_value("qt", "krellpatch", "False"). +variant_possible_value("qt", "krellpatch", "False"). +variant_possible_value("qt", "krellpatch", "True"). + +variant("qt", "opengl"). +variant_single_value("qt", "opengl"). +variant_default_value("qt", "opengl", "False"). +variant_possible_value("qt", "opengl", "False"). +variant_possible_value("qt", "opengl", "True"). + +variant("qt", "phonon"). +variant_single_value("qt", "phonon"). +variant_default_value("qt", "phonon", "False"). +variant_possible_value("qt", "phonon", "False"). +variant_possible_value("qt", "phonon", "True"). + +variant("qt", "shared"). +variant_single_value("qt", "shared"). +variant_default_value("qt", "shared", "True"). +variant_possible_value("qt", "shared", "False"). +variant_possible_value("qt", "shared", "True"). + +variant("qt", "sql"). +variant_single_value("qt", "sql"). +variant_default_value("qt", "sql", "True"). +variant_possible_value("qt", "sql", "False"). +variant_possible_value("qt", "sql", "True"). + +variant("qt", "ssl"). +variant_single_value("qt", "ssl"). +variant_default_value("qt", "ssl", "True"). +variant_possible_value("qt", "ssl", "False"). +variant_possible_value("qt", "ssl", "True"). + +variant("qt", "tools"). +variant_single_value("qt", "tools"). +variant_default_value("qt", "tools", "True"). +variant_possible_value("qt", "tools", "False"). +variant_possible_value("qt", "tools", "True"). + +variant("qt", "webkit"). +variant_single_value("qt", "webkit"). +variant_default_value("qt", "webkit", "False"). +variant_possible_value("qt", "webkit", "False"). +variant_possible_value("qt", "webkit", "True"). + +declared_dependency("qt", "bison", "build") :- node("qt"), variant_value("qt", "webkit", "True"). +node("bison") :- depends_on("qt", "bison"), node("qt"), variant_value("qt", "webkit", "True"). + +declared_dependency("qt", "dbus", "build") :- node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1, variant_value("qt", "dbus", "True"). +declared_dependency("qt", "dbus", "link") :- node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1, variant_value("qt", "dbus", "True"). +node("dbus") :- depends_on("qt", "dbus"), node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1, variant_value("qt", "dbus", "True"). + +declared_dependency("qt", "double-conversion", "build") :- node("qt"), 1 { version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +declared_dependency("qt", "double-conversion", "link") :- node("qt"), 1 { version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +node("double-conversion") :- depends_on("qt", "double-conversion"), node("qt"), 1 { version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. + +declared_dependency("qt", "flex", "build") :- node("qt"), variant_value("qt", "webkit", "True"). +node("flex") :- depends_on("qt", "flex"), node("qt"), variant_value("qt", "webkit", "True"). + +declared_dependency("qt", "freetype", "build") :- node("qt"), variant_value("qt", "freetype", "spack"). +declared_dependency("qt", "freetype", "link") :- node("qt"), variant_value("qt", "freetype", "spack"). +node("freetype") :- depends_on("qt", "freetype"), node("qt"), variant_value("qt", "freetype", "spack"). + +declared_dependency("qt", "gl", "build") :- node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1, variant_value("qt", "opengl", "True"). +declared_dependency("qt", "gl", "link") :- node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1, variant_value("qt", "opengl", "True"). +node("gl") :- depends_on("qt", "gl"), node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1, variant_value("qt", "opengl", "True"). + +declared_dependency("qt", "glib", "build") :- node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +declared_dependency("qt", "glib", "link") :- node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +node("glib") :- depends_on("qt", "glib"), node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. + +declared_dependency("qt", "gperf", "build") :- node("qt"), variant_value("qt", "webkit", "True"). +declared_dependency("qt", "gperf", "link") :- node("qt"), variant_value("qt", "webkit", "True"). +node("gperf") :- depends_on("qt", "gperf"), node("qt"), variant_value("qt", "webkit", "True"). + +declared_dependency("qt", "gtkplus", "build") :- node("qt"), variant_value("qt", "gtk", "True"). +declared_dependency("qt", "gtkplus", "link") :- node("qt"), variant_value("qt", "gtk", "True"). +node("gtkplus") :- depends_on("qt", "gtkplus"), node("qt"), variant_value("qt", "gtk", "True"). + +declared_dependency("qt", "harfbuzz", "build") :- node("qt"), 1 { version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +declared_dependency("qt", "harfbuzz", "link") :- node("qt"), 1 { version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +node("harfbuzz") :- depends_on("qt", "harfbuzz"), node("qt"), 1 { version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. + +declared_dependency("qt", "icu4c", "build"). +declared_dependency("qt", "icu4c", "link"). +node("icu4c") :- depends_on("qt", "icu4c"), node("qt"). + +declared_dependency("qt", "inputproto", "build") :- node("qt"), 1 { version("qt", "3.3.8b"); version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0") } 1. +declared_dependency("qt", "inputproto", "link") :- node("qt"), 1 { version("qt", "3.3.8b"); version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0") } 1. +node("inputproto") :- depends_on("qt", "inputproto"), node("qt"), 1 { version("qt", "3.3.8b"); version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0") } 1. + +declared_dependency("qt", "jpeg", "build"). +declared_dependency("qt", "jpeg", "link"). +node("jpeg") :- depends_on("qt", "jpeg"), node("qt"). + +declared_dependency("qt", "libmng", "build"). +declared_dependency("qt", "libmng", "link"). +node("libmng") :- depends_on("qt", "libmng"), node("qt"). + +declared_dependency("qt", "libpng", "build") :- node("qt"), 1 { version("qt", "3.3.8b") } 1. +declared_dependency("qt", "libpng", "link") :- node("qt"), 1 { version("qt", "3.3.8b") } 1. +node("libpng") :- depends_on("qt", "libpng"), node("qt"), 1 { version("qt", "3.3.8b") } 1. +1 { version("libpng", "1.2.57") } 1 :- depends_on("qt", "libpng"), node("qt"), 1 { version("qt", "3.3.8b") } 1. +declared_dependency("qt", "libpng", "build") :- node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +declared_dependency("qt", "libpng", "link") :- node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +node("libpng") :- depends_on("qt", "libpng"), node("qt"), 1 { version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. + +declared_dependency("qt", "libtiff", "build"). +declared_dependency("qt", "libtiff", "link"). +node("libtiff") :- depends_on("qt", "libtiff"), node("qt"). + +declared_dependency("qt", "libxml2", "build"). +declared_dependency("qt", "libxml2", "link"). +node("libxml2") :- depends_on("qt", "libxml2"), node("qt"). + +declared_dependency("qt", "openssl", "build") :- node("qt"), 1 { version("qt", "3.3.8b"); version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1") } 1, variant_value("qt", "krellpatch", "False"), variant_value("qt", "ssl", "True"). +declared_dependency("qt", "openssl", "link") :- node("qt"), 1 { version("qt", "3.3.8b"); version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1") } 1, variant_value("qt", "krellpatch", "False"), variant_value("qt", "ssl", "True"). +node("openssl") :- depends_on("qt", "openssl"), node("qt"), 1 { version("qt", "3.3.8b"); version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1") } 1, variant_value("qt", "krellpatch", "False"), variant_value("qt", "ssl", "True"). +1 { version("openssl", "1.0.1e"); version("openssl", "1.0.1h"); version("openssl", "1.0.1r"); version("openssl", "1.0.1t"); version("openssl", "1.0.1u"); version("openssl", "1.0.2d"); version("openssl", "1.0.2e"); version("openssl", "1.0.2f"); version("openssl", "1.0.2g"); version("openssl", "1.0.2h"); version("openssl", "1.0.2i"); version("openssl", "1.0.2j"); version("openssl", "1.0.2k"); version("openssl", "1.0.2m"); version("openssl", "1.0.2n"); version("openssl", "1.0.2o"); version("openssl", "1.0.2p"); version("openssl", "1.0.2r"); version("openssl", "1.0.2s"); version("openssl", "1.0.2t") } 1 :- depends_on("qt", "openssl"), node("qt"), 1 { version("qt", "3.3.8b"); version("qt", "4.8.5"); version("qt", "4.8.6"); version("qt", "4.8.7"); version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1") } 1, variant_value("qt", "krellpatch", "False"), variant_value("qt", "ssl", "True"). +declared_dependency("qt", "openssl", "build") :- node("qt"), variant_value("qt", "ssl", "True"). +declared_dependency("qt", "openssl", "link") :- node("qt"), variant_value("qt", "ssl", "True"). +node("openssl") :- depends_on("qt", "openssl"), node("qt"), variant_value("qt", "ssl", "True"). + +declared_dependency("qt", "pcre", "build") :- node("qt"), 1 { version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0") } 1. +declared_dependency("qt", "pcre", "link") :- node("qt"), 1 { version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0") } 1. +node("pcre") :- depends_on("qt", "pcre"), node("qt"), 1 { version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0") } 1. +variant_set("pcre", "multibyte", "True") :- depends_on("qt", "pcre"), node("qt"), 1 { version("qt", "5.2.1"); version("qt", "5.3.2"); version("qt", "5.4.0"); version("qt", "5.4.2"); version("qt", "5.5.1"); version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0") } 1. + +declared_dependency("qt", "pcre2", "build") :- node("qt"), 1 { version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +declared_dependency("qt", "pcre2", "link") :- node("qt"), 1 { version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +node("pcre2") :- depends_on("qt", "pcre2"), node("qt"), 1 { version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +variant_set("pcre2", "multibyte", "True") :- depends_on("qt", "pcre2"), node("qt"), 1 { version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. + +declared_dependency("qt", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("qt", "pkgconfig"), node("qt"). + +declared_dependency("qt", "python", "build") :- node("qt"), 1 { version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. +node("python") :- depends_on("qt", "python"), node("qt"), 1 { version("qt", "5.7.0"); version("qt", "5.7.1"); version("qt", "5.8.0"); version("qt", "5.9.0"); version("qt", "5.9.1"); version("qt", "5.10.0"); version("qt", "5.11.2"); version("qt", "5.11.3"); version("qt", "5.12.2"); version("qt", "5.12.5"); version("qt", "5.13.1"); version("qt", "5.14.0"); version("qt", "5.14.1") } 1. + +declared_dependency("qt", "sqlite", "build") :- node("qt"), variant_value("qt", "sql", "True"). +declared_dependency("qt", "sqlite", "run") :- node("qt"), variant_value("qt", "sql", "True"). +node("sqlite") :- depends_on("qt", "sqlite"), node("qt"), variant_value("qt", "sql", "True"). +declared_dependency("qt", "sqlite", "build") :- node("qt"), variant_value("qt", "sql", "True"), node_compiler("qt", "intel"), node_compiler_hard("qt", "intel"), 1 { } 1. +declared_dependency("qt", "sqlite", "run") :- node("qt"), variant_value("qt", "sql", "True"), node_compiler("qt", "intel"), node_compiler_hard("qt", "intel"), 1 { } 1. +node("sqlite") :- depends_on("qt", "sqlite"), node("qt"), variant_value("qt", "sql", "True"), node_compiler("qt", "intel"), node_compiler_hard("qt", "intel"), 1 { } 1. +variant_set("sqlite", "column_metadata", "True") :- depends_on("qt", "sqlite"), node("qt"), variant_value("qt", "sql", "True"), node_compiler("qt", "intel"), node_compiler_hard("qt", "intel"), 1 { } 1. + +declared_dependency("qt", "zlib", "build"). +declared_dependency("qt", "zlib", "link"). +node("zlib") :- depends_on("qt", "zlib"), node("qt"). + + +%---------------------------------------------------------------------------- +% Package: rdma-core +%---------------------------------------------------------------------------- +version_declared("rdma-core", "20", 0). +version_declared("rdma-core", "17.1", 1). +version_declared("rdma-core", "13", 2). + +variant("rdma-core", "build_type"). +variant_single_value("rdma-core", "build_type"). +variant_default_value("rdma-core", "build_type", "RelWithDebInfo"). +variant_possible_value("rdma-core", "build_type", "Debug"). +variant_possible_value("rdma-core", "build_type", "MinSizeRel"). +variant_possible_value("rdma-core", "build_type", "RelWithDebInfo"). +variant_possible_value("rdma-core", "build_type", "Release"). + +declared_dependency("rdma-core", "cmake", "build"). +node("cmake") :- depends_on("rdma-core", "cmake"), node("rdma-core"). + +declared_dependency("rdma-core", "libnl", "build"). +declared_dependency("rdma-core", "libnl", "link"). +node("libnl") :- depends_on("rdma-core", "libnl"), node("rdma-core"). + +declared_dependency("rdma-core", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("rdma-core", "pkgconfig"), node("rdma-core"). + + +%---------------------------------------------------------------------------- +% Package: readline +%---------------------------------------------------------------------------- +version_declared("readline", "8.0", 0). +version_declared("readline", "7.0", 1). +version_declared("readline", "6.3", 2). + +declared_dependency("readline", "ncurses", "build"). +declared_dependency("readline", "ncurses", "link"). +node("ncurses") :- depends_on("readline", "ncurses"), node("readline"). + + +%---------------------------------------------------------------------------- +% Package: recordproto +%---------------------------------------------------------------------------- +version_declared("recordproto", "1.14.2", 0). + +declared_dependency("recordproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("recordproto", "pkgconfig"), node("recordproto"). + +declared_dependency("recordproto", "util-macros", "build"). +node("util-macros") :- depends_on("recordproto", "util-macros"), node("recordproto"). + + +%---------------------------------------------------------------------------- +% Package: renderproto +%---------------------------------------------------------------------------- +version_declared("renderproto", "0.11.1", 0). + +declared_dependency("renderproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("renderproto", "pkgconfig"), node("renderproto"). + +declared_dependency("renderproto", "util-macros", "build"). +node("util-macros") :- depends_on("renderproto", "util-macros"), node("renderproto"). + + +%---------------------------------------------------------------------------- +% Package: rhash +%---------------------------------------------------------------------------- +version_declared("rhash", "1.3.5", 0). + + +%---------------------------------------------------------------------------- +% Package: rpcsvc-proto +%---------------------------------------------------------------------------- +version_declared("rpcsvc-proto", "1.4", 0). + +declared_dependency("rpcsvc-proto", "gettext", "build"). +declared_dependency("rpcsvc-proto", "gettext", "link"). +node("gettext") :- depends_on("rpcsvc-proto", "gettext"), node("rpcsvc-proto"). + + +%---------------------------------------------------------------------------- +% Package: rust +%---------------------------------------------------------------------------- +version_declared("rust", "1.41.0", 0). +version_declared("rust", "1.34.0", 1). +version_declared("rust", "1.32.0", 2). +version_declared("rust", "1.31.1", 3). +version_declared("rust", "1.31.0", 4). +version_declared("rust", "1.30.1", 5). +version_declared("rust", "develop", 6). + +declared_dependency("rust", "binutils", "build"). +declared_dependency("rust", "binutils", "link"). +node("binutils") :- depends_on("rust", "binutils"), node("rust"). + +declared_dependency("rust", "cmake", "build"). +declared_dependency("rust", "cmake", "link"). +node("cmake") :- depends_on("rust", "cmake"), node("rust"). + +declared_dependency("rust", "curl", "build"). +declared_dependency("rust", "curl", "link"). +node("curl") :- depends_on("rust", "curl"), node("rust"). + +declared_dependency("rust", "git", "build"). +declared_dependency("rust", "git", "link"). +node("git") :- depends_on("rust", "git"), node("rust"). + +declared_dependency("rust", "llvm", "build"). +declared_dependency("rust", "llvm", "link"). +node("llvm") :- depends_on("rust", "llvm"), node("rust"). + +declared_dependency("rust", "openssl", "build"). +declared_dependency("rust", "openssl", "link"). +node("openssl") :- depends_on("rust", "openssl"), node("rust"). + +declared_dependency("rust", "python", "build"). +declared_dependency("rust", "python", "link"). +node("python") :- depends_on("rust", "python"), node("rust"). +1 { version("python", "2.7.8"); version("python", "2.7.9"); version("python", "2.7.10"); version("python", "2.7.11"); version("python", "2.7.12"); version("python", "2.7.13"); version("python", "2.7.14"); version("python", "2.7.15"); version("python", "2.7.16") } 1 :- depends_on("rust", "python"), node("rust"). + + +%---------------------------------------------------------------------------- +% Package: scrnsaverproto +%---------------------------------------------------------------------------- +version_declared("scrnsaverproto", "1.2.2", 0). + +declared_dependency("scrnsaverproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("scrnsaverproto", "pkgconfig"), node("scrnsaverproto"). + +declared_dependency("scrnsaverproto", "util-macros", "build"). +node("util-macros") :- depends_on("scrnsaverproto", "util-macros"), node("scrnsaverproto"). + + +%---------------------------------------------------------------------------- +% Package: sed +%---------------------------------------------------------------------------- +version_declared("sed", "4.2.2", 0). + + +%---------------------------------------------------------------------------- +% Package: shared-mime-info +%---------------------------------------------------------------------------- +version_declared("shared-mime-info", "1.9", 0). +version_declared("shared-mime-info", "1.8", 1). + +declared_dependency("shared-mime-info", "gettext", "build"). +node("gettext") :- depends_on("shared-mime-info", "gettext"), node("shared-mime-info"). + +declared_dependency("shared-mime-info", "glib", "build"). +declared_dependency("shared-mime-info", "glib", "link"). +node("glib") :- depends_on("shared-mime-info", "glib"), node("shared-mime-info"). + +declared_dependency("shared-mime-info", "intltool", "build"). +node("intltool") :- depends_on("shared-mime-info", "intltool"), node("shared-mime-info"). + +declared_dependency("shared-mime-info", "libxml2", "build"). +declared_dependency("shared-mime-info", "libxml2", "link"). +node("libxml2") :- depends_on("shared-mime-info", "libxml2"), node("shared-mime-info"). + +declared_dependency("shared-mime-info", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("shared-mime-info", "pkgconfig"), node("shared-mime-info"). + + +%---------------------------------------------------------------------------- +% Package: slurm +%---------------------------------------------------------------------------- +version_declared("slurm", "18-08-0-1", 0). +version_declared("slurm", "17-11-9-2", 1). +version_declared("slurm", "17-02-6-1", 2). + +variant("slurm", "gtk"). +variant_single_value("slurm", "gtk"). +variant_default_value("slurm", "gtk", "False"). +variant_possible_value("slurm", "gtk", "False"). +variant_possible_value("slurm", "gtk", "True"). + +variant("slurm", "hdf5"). +variant_single_value("slurm", "hdf5"). +variant_default_value("slurm", "hdf5", "False"). +variant_possible_value("slurm", "hdf5", "False"). +variant_possible_value("slurm", "hdf5", "True"). + +variant("slurm", "hwloc"). +variant_single_value("slurm", "hwloc"). +variant_default_value("slurm", "hwloc", "False"). +variant_possible_value("slurm", "hwloc", "False"). +variant_possible_value("slurm", "hwloc", "True"). + +variant("slurm", "mariadb"). +variant_single_value("slurm", "mariadb"). +variant_default_value("slurm", "mariadb", "False"). +variant_possible_value("slurm", "mariadb", "False"). +variant_possible_value("slurm", "mariadb", "True"). + +variant("slurm", "pmix"). +variant_single_value("slurm", "pmix"). +variant_default_value("slurm", "pmix", "False"). +variant_possible_value("slurm", "pmix", "False"). +variant_possible_value("slurm", "pmix", "True"). + +variant("slurm", "readline"). +variant_single_value("slurm", "readline"). +variant_default_value("slurm", "readline", "True"). +variant_possible_value("slurm", "readline", "False"). +variant_possible_value("slurm", "readline", "True"). + +declared_dependency("slurm", "curl", "build"). +declared_dependency("slurm", "curl", "link"). +node("curl") :- depends_on("slurm", "curl"), node("slurm"). + +declared_dependency("slurm", "glib", "build"). +declared_dependency("slurm", "glib", "link"). +node("glib") :- depends_on("slurm", "glib"), node("slurm"). + +declared_dependency("slurm", "gtkplus", "build") :- node("slurm"), variant_value("slurm", "gtk", "True"). +declared_dependency("slurm", "gtkplus", "link") :- node("slurm"), variant_value("slurm", "gtk", "True"). +node("gtkplus") :- depends_on("slurm", "gtkplus"), node("slurm"), variant_value("slurm", "gtk", "True"). + +declared_dependency("slurm", "hdf5", "build") :- node("slurm"), variant_value("slurm", "hdf5", "True"). +declared_dependency("slurm", "hdf5", "link") :- node("slurm"), variant_value("slurm", "hdf5", "True"). +node("hdf5") :- depends_on("slurm", "hdf5"), node("slurm"), variant_value("slurm", "hdf5", "True"). + +declared_dependency("slurm", "hwloc", "build") :- node("slurm"), variant_value("slurm", "hwloc", "True"). +declared_dependency("slurm", "hwloc", "link") :- node("slurm"), variant_value("slurm", "hwloc", "True"). +node("hwloc") :- depends_on("slurm", "hwloc"), node("slurm"), variant_value("slurm", "hwloc", "True"). + +declared_dependency("slurm", "json-c", "build"). +declared_dependency("slurm", "json-c", "link"). +node("json-c") :- depends_on("slurm", "json-c"), node("slurm"). + +declared_dependency("slurm", "lz4", "build"). +declared_dependency("slurm", "lz4", "link"). +node("lz4") :- depends_on("slurm", "lz4"), node("slurm"). + +declared_dependency("slurm", "mariadb", "build") :- node("slurm"), variant_value("slurm", "mariadb", "True"). +declared_dependency("slurm", "mariadb", "link") :- node("slurm"), variant_value("slurm", "mariadb", "True"). +node("mariadb") :- depends_on("slurm", "mariadb"), node("slurm"), variant_value("slurm", "mariadb", "True"). + +declared_dependency("slurm", "munge", "build"). +declared_dependency("slurm", "munge", "link"). +node("munge") :- depends_on("slurm", "munge"), node("slurm"). + +declared_dependency("slurm", "openssl", "build"). +declared_dependency("slurm", "openssl", "link"). +node("openssl") :- depends_on("slurm", "openssl"), node("slurm"). + +declared_dependency("slurm", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("slurm", "pkgconfig"), node("slurm"). + +declared_dependency("slurm", "pmix", "build") :- node("slurm"), variant_value("slurm", "pmix", "True"). +declared_dependency("slurm", "pmix", "link") :- node("slurm"), variant_value("slurm", "pmix", "True"). +node("pmix") :- depends_on("slurm", "pmix"), node("slurm"), variant_value("slurm", "pmix", "True"). + +declared_dependency("slurm", "readline", "build") :- node("slurm"), variant_value("slurm", "readline", "True"). +declared_dependency("slurm", "readline", "link") :- node("slurm"), variant_value("slurm", "readline", "True"). +node("readline") :- depends_on("slurm", "readline"), node("slurm"), variant_value("slurm", "readline", "True"). + +declared_dependency("slurm", "zlib", "build"). +declared_dependency("slurm", "zlib", "link"). +node("zlib") :- depends_on("slurm", "zlib"), node("slurm"). + + +%---------------------------------------------------------------------------- +% Package: spectrum-mpi +%---------------------------------------------------------------------------- + + +%---------------------------------------------------------------------------- +% Package: sqlite +%---------------------------------------------------------------------------- +version_declared("sqlite", "3.30.1", 0). +version_declared("sqlite", "3.30.0", 1). +version_declared("sqlite", "3.29.0", 2). +version_declared("sqlite", "3.28.0", 3). +version_declared("sqlite", "3.27.2", 4). +version_declared("sqlite", "3.27.1", 5). +version_declared("sqlite", "3.27.0", 6). +version_declared("sqlite", "3.26.0", 7). + +variant("sqlite", "column_metadata"). +variant_single_value("sqlite", "column_metadata"). +variant_default_value("sqlite", "column_metadata", "False"). +variant_possible_value("sqlite", "column_metadata", "False"). +variant_possible_value("sqlite", "column_metadata", "True"). + +variant("sqlite", "fts"). +variant_single_value("sqlite", "fts"). +variant_default_value("sqlite", "fts", "True"). +variant_possible_value("sqlite", "fts", "False"). +variant_possible_value("sqlite", "fts", "True"). + +variant("sqlite", "functions"). +variant_single_value("sqlite", "functions"). +variant_default_value("sqlite", "functions", "False"). +variant_possible_value("sqlite", "functions", "False"). +variant_possible_value("sqlite", "functions", "True"). + +variant("sqlite", "rtree"). +variant_single_value("sqlite", "rtree"). +variant_default_value("sqlite", "rtree", "False"). +variant_possible_value("sqlite", "rtree", "False"). +variant_possible_value("sqlite", "rtree", "True"). + +declared_dependency("sqlite", "readline", "build"). +declared_dependency("sqlite", "readline", "link"). +node("readline") :- depends_on("sqlite", "readline"), node("sqlite"). + +declared_dependency("sqlite", "zlib", "build"). +declared_dependency("sqlite", "zlib", "link"). +node("zlib") :- depends_on("sqlite", "zlib"), node("sqlite"). + + +%---------------------------------------------------------------------------- +% Package: swig +%---------------------------------------------------------------------------- +version_declared("swig", "4.0.0", 0). +version_declared("swig", "3.0.12", 1). +version_declared("swig", "3.0.11", 2). +version_declared("swig", "3.0.10", 3). +version_declared("swig", "3.0.8", 4). +version_declared("swig", "3.0.2", 5). +version_declared("swig", "2.0.12", 6). +version_declared("swig", "2.0.2", 7). +version_declared("swig", "1.3.40", 8). +version_declared("swig", "fortran", 9). +version_declared("swig", "master", 10). + +declared_dependency("swig", "autoconf", "build") :- node("swig"), 1 { version("swig", "fortran") } 1. +node("autoconf") :- depends_on("swig", "autoconf"), node("swig"), 1 { version("swig", "fortran") } 1. +declared_dependency("swig", "autoconf", "build") :- node("swig"), 1 { version("swig", "master") } 1. +node("autoconf") :- depends_on("swig", "autoconf"), node("swig"), 1 { version("swig", "master") } 1. + +declared_dependency("swig", "automake", "build") :- node("swig"), 1 { version("swig", "fortran") } 1. +node("automake") :- depends_on("swig", "automake"), node("swig"), 1 { version("swig", "fortran") } 1. +declared_dependency("swig", "automake", "build") :- node("swig"), 1 { version("swig", "master") } 1. +node("automake") :- depends_on("swig", "automake"), node("swig"), 1 { version("swig", "master") } 1. + +declared_dependency("swig", "libtool", "build") :- node("swig"), 1 { version("swig", "fortran") } 1. +node("libtool") :- depends_on("swig", "libtool"), node("swig"), 1 { version("swig", "fortran") } 1. +declared_dependency("swig", "libtool", "build") :- node("swig"), 1 { version("swig", "master") } 1. +node("libtool") :- depends_on("swig", "libtool"), node("swig"), 1 { version("swig", "master") } 1. + +declared_dependency("swig", "pcre", "build"). +declared_dependency("swig", "pcre", "link"). +node("pcre") :- depends_on("swig", "pcre"), node("swig"). + +declared_dependency("swig", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("swig", "pkgconfig"), node("swig"). + + +%---------------------------------------------------------------------------- +% Package: tar +%---------------------------------------------------------------------------- +version_declared("tar", "1.32", 0). +version_declared("tar", "1.31", 1). +version_declared("tar", "1.30", 2). +version_declared("tar", "1.29", 3). +version_declared("tar", "1.28", 4). + +declared_dependency("tar", "libiconv", "build"). +declared_dependency("tar", "libiconv", "link"). +node("libiconv") :- depends_on("tar", "libiconv"), node("tar"). + + +%---------------------------------------------------------------------------- +% Package: tcl +%---------------------------------------------------------------------------- +version_declared("tcl", "8.6.8", 0). +version_declared("tcl", "8.6.6", 1). +version_declared("tcl", "8.6.5", 2). +version_declared("tcl", "8.6.4", 3). +version_declared("tcl", "8.6.3", 4). +version_declared("tcl", "8.5.19", 5). + +declared_dependency("tcl", "zlib", "build"). +declared_dependency("tcl", "zlib", "link"). +node("zlib") :- depends_on("tcl", "zlib"), node("tcl"). + + +%---------------------------------------------------------------------------- +% Package: texinfo +%---------------------------------------------------------------------------- +version_declared("texinfo", "6.5", 0). +version_declared("texinfo", "6.3", 1). +version_declared("texinfo", "6.0", 2). +version_declared("texinfo", "5.2", 3). +version_declared("texinfo", "5.1", 4). +version_declared("texinfo", "5.0", 5). + +declared_dependency("texinfo", "perl", "build"). +declared_dependency("texinfo", "perl", "link"). +node("perl") :- depends_on("texinfo", "perl"), node("texinfo"). + + +%---------------------------------------------------------------------------- +% Package: tix +%---------------------------------------------------------------------------- +version_declared("tix", "8.4.3", 0). + +declared_dependency("tix", "tcl", "build"). +declared_dependency("tix", "tcl", "link"). +node("tcl") :- depends_on("tix", "tcl"), node("tix"). +1 { version("tcl", "8.5.19") } 1 :- depends_on("tix", "tcl"), node("tix"). + +declared_dependency("tix", "tk", "build"). +declared_dependency("tix", "tk", "link"). +node("tk") :- depends_on("tix", "tk"), node("tix"). +1 { version("tk", "8.5.19") } 1 :- depends_on("tix", "tk"), node("tix"). + + +%---------------------------------------------------------------------------- +% Package: tk +%---------------------------------------------------------------------------- +version_declared("tk", "8.6.8", 0). +version_declared("tk", "8.6.6", 1). +version_declared("tk", "8.6.5", 2). +version_declared("tk", "8.6.3", 3). +version_declared("tk", "8.5.19", 4). + +variant("tk", "xft"). +variant_single_value("tk", "xft"). +variant_default_value("tk", "xft", "True"). +variant_possible_value("tk", "xft", "False"). +variant_possible_value("tk", "xft", "True"). + +variant("tk", "xss"). +variant_single_value("tk", "xss"). +variant_default_value("tk", "xss", "True"). +variant_possible_value("tk", "xss", "False"). +variant_possible_value("tk", "xss", "True"). + +declared_dependency("tk", "libx11", "build"). +declared_dependency("tk", "libx11", "link"). +node("libx11") :- depends_on("tk", "libx11"), node("tk"). + +declared_dependency("tk", "libxft", "build") :- node("tk"), variant_value("tk", "xft", "True"). +declared_dependency("tk", "libxft", "link") :- node("tk"), variant_value("tk", "xft", "True"). +node("libxft") :- depends_on("tk", "libxft"), node("tk"), variant_value("tk", "xft", "True"). + +declared_dependency("tk", "libxscrnsaver", "build") :- node("tk"), variant_value("tk", "xss", "True"). +declared_dependency("tk", "libxscrnsaver", "link") :- node("tk"), variant_value("tk", "xss", "True"). +node("libxscrnsaver") :- depends_on("tk", "libxscrnsaver"), node("tk"), variant_value("tk", "xss", "True"). + +declared_dependency("tk", "tcl", "build"). +declared_dependency("tk", "tcl", "link"). +node("tcl") :- depends_on("tk", "tcl"), node("tk"). +declared_dependency("tk", "tcl", "build") :- node("tk"), 1 { version("tk", "8.6.3"); version("tk", "8.6.5"); version("tk", "8.6.6"); version("tk", "8.6.8") } 1. +declared_dependency("tk", "tcl", "link") :- node("tk"), 1 { version("tk", "8.6.3"); version("tk", "8.6.5"); version("tk", "8.6.6"); version("tk", "8.6.8") } 1. +node("tcl") :- depends_on("tk", "tcl"), node("tk"), 1 { version("tk", "8.6.3"); version("tk", "8.6.5"); version("tk", "8.6.6"); version("tk", "8.6.8") } 1. +1 { version("tcl", "8.6.3"); version("tcl", "8.6.4"); version("tcl", "8.6.5"); version("tcl", "8.6.6"); version("tcl", "8.6.8") } 1 :- depends_on("tk", "tcl"), node("tk"), 1 { version("tk", "8.6.3"); version("tk", "8.6.5"); version("tk", "8.6.6"); version("tk", "8.6.8") } 1. + + +%---------------------------------------------------------------------------- +% Package: ucx +%---------------------------------------------------------------------------- +version_declared("ucx", "1.6.1", 0). +version_declared("ucx", "1.6.0", 1). +version_declared("ucx", "1.5.2", 2). +version_declared("ucx", "1.5.1", 3). +version_declared("ucx", "1.5.0", 4). +version_declared("ucx", "1.4.0", 5). +version_declared("ucx", "1.3.1", 6). +version_declared("ucx", "1.3.0", 7). +version_declared("ucx", "1.2.2", 8). +version_declared("ucx", "1.2.1", 9). +version_declared("ucx", "1.2.0", 10). + +variant("ucx", "thread_multiple"). +variant_single_value("ucx", "thread_multiple"). +variant_default_value("ucx", "thread_multiple", "False"). +variant_possible_value("ucx", "thread_multiple", "False"). +variant_possible_value("ucx", "thread_multiple", "True"). + +declared_dependency("ucx", "numactl", "build"). +declared_dependency("ucx", "numactl", "link"). +node("numactl") :- depends_on("ucx", "numactl"), node("ucx"). + +declared_dependency("ucx", "rdma-core", "build"). +declared_dependency("ucx", "rdma-core", "link"). +node("rdma-core") :- depends_on("ucx", "rdma-core"), node("ucx"). + + +%---------------------------------------------------------------------------- +% Package: util-linux +%---------------------------------------------------------------------------- +version_declared("util-linux", "2.29.2", 0). +version_declared("util-linux", "2.29.1", 1). +version_declared("util-linux", "2.25", 2). + +variant("util-linux", "libuuid"). +variant_single_value("util-linux", "libuuid"). +variant_default_value("util-linux", "libuuid", "True"). +variant_possible_value("util-linux", "libuuid", "False"). +variant_possible_value("util-linux", "libuuid", "True"). + +declared_dependency("util-linux", "pkgconfig", "build"). +declared_dependency("util-linux", "pkgconfig", "link"). +node("pkgconfig") :- depends_on("util-linux", "pkgconfig"), node("util-linux"). + +declared_dependency("util-linux", "python", "build"). +declared_dependency("util-linux", "python", "link"). +node("python") :- depends_on("util-linux", "python"), node("util-linux"). + + +%---------------------------------------------------------------------------- +% Package: util-macros +%---------------------------------------------------------------------------- +version_declared("util-macros", "1.19.1", 0). +version_declared("util-macros", "1.19.0", 1). + + +%---------------------------------------------------------------------------- +% Package: valgrind +%---------------------------------------------------------------------------- +version_declared("valgrind", "3.15.0", 0). +version_declared("valgrind", "3.14.0", 1). +version_declared("valgrind", "3.13.0", 2). +version_declared("valgrind", "3.12.0", 3). +version_declared("valgrind", "3.11.0", 4). +version_declared("valgrind", "3.10.1", 5). +version_declared("valgrind", "3.10.0", 6). +version_declared("valgrind", "develop", 7). + +variant("valgrind", "boost"). +variant_single_value("valgrind", "boost"). +variant_default_value("valgrind", "boost", "True"). +variant_possible_value("valgrind", "boost", "False"). +variant_possible_value("valgrind", "boost", "True"). + +variant("valgrind", "mpi"). +variant_single_value("valgrind", "mpi"). +variant_default_value("valgrind", "mpi", "True"). +variant_possible_value("valgrind", "mpi", "False"). +variant_possible_value("valgrind", "mpi", "True"). + +variant("valgrind", "only64bit"). +variant_single_value("valgrind", "only64bit"). +variant_default_value("valgrind", "only64bit", "True"). +variant_possible_value("valgrind", "only64bit", "False"). +variant_possible_value("valgrind", "only64bit", "True"). + +variant("valgrind", "ubsan"). +variant_single_value("valgrind", "ubsan"). +variant_default_value("valgrind", "ubsan", "False"). +variant_possible_value("valgrind", "ubsan", "False"). +variant_possible_value("valgrind", "ubsan", "True"). + +declared_dependency("valgrind", "autoconf", "build") :- node("valgrind"), 1 { version("valgrind", "develop") } 1. +node("autoconf") :- depends_on("valgrind", "autoconf"), node("valgrind"), 1 { version("valgrind", "develop") } 1. + +declared_dependency("valgrind", "automake", "build") :- node("valgrind"), 1 { version("valgrind", "develop") } 1. +node("automake") :- depends_on("valgrind", "automake"), node("valgrind"), 1 { version("valgrind", "develop") } 1. + +declared_dependency("valgrind", "boost", "build") :- node("valgrind"), variant_value("valgrind", "boost", "True"). +declared_dependency("valgrind", "boost", "link") :- node("valgrind"), variant_value("valgrind", "boost", "True"). +node("boost") :- depends_on("valgrind", "boost"), node("valgrind"), variant_value("valgrind", "boost", "True"). + +declared_dependency("valgrind", "libtool", "build") :- node("valgrind"), 1 { version("valgrind", "develop") } 1. +node("libtool") :- depends_on("valgrind", "libtool"), node("valgrind"), 1 { version("valgrind", "develop") } 1. + +declared_dependency("valgrind", "mpi", "build") :- node("valgrind"), variant_value("valgrind", "mpi", "True"). +declared_dependency("valgrind", "mpi", "link") :- node("valgrind"), variant_value("valgrind", "mpi", "True"). +node("mpi") :- depends_on("valgrind", "mpi"), node("valgrind"), variant_value("valgrind", "mpi", "True"). + + +%---------------------------------------------------------------------------- +% Package: veclibfort +%---------------------------------------------------------------------------- +version_declared("veclibfort", "0.4.2", 0). +version_declared("veclibfort", "develop", 1). + +variant("veclibfort", "shared"). +variant_single_value("veclibfort", "shared"). +variant_default_value("veclibfort", "shared", "True"). +variant_possible_value("veclibfort", "shared", "False"). +variant_possible_value("veclibfort", "shared", "True"). + + +%---------------------------------------------------------------------------- +% Package: wget +%---------------------------------------------------------------------------- +version_declared("wget", "1.20.3", 0). +version_declared("wget", "1.19.1", 1). +version_declared("wget", "1.17", 2). +version_declared("wget", "1.16", 3). + +variant("wget", "libpsl"). +variant_single_value("wget", "libpsl"). +variant_default_value("wget", "libpsl", "False"). +variant_possible_value("wget", "libpsl", "False"). +variant_possible_value("wget", "libpsl", "True"). + +variant("wget", "pcre"). +variant_single_value("wget", "pcre"). +variant_default_value("wget", "pcre", "False"). +variant_possible_value("wget", "pcre", "False"). +variant_possible_value("wget", "pcre", "True"). + +variant("wget", "python"). +variant_single_value("wget", "python"). +variant_default_value("wget", "python", "False"). +variant_possible_value("wget", "python", "False"). +variant_possible_value("wget", "python", "True"). + +variant("wget", "ssl"). +variant_single_value("wget", "ssl"). +variant_default_value("wget", "ssl", "openssl"). +variant_possible_value("wget", "ssl", "gnutls"). +variant_possible_value("wget", "ssl", "openssl"). + +variant("wget", "zlib"). +variant_single_value("wget", "zlib"). +variant_default_value("wget", "zlib", "True"). +variant_possible_value("wget", "zlib", "False"). +variant_possible_value("wget", "zlib", "True"). + +declared_dependency("wget", "gettext", "build"). +node("gettext") :- depends_on("wget", "gettext"), node("wget"). + +declared_dependency("wget", "gnutls", "build") :- node("wget"), variant_value("wget", "ssl", "gnutls"). +declared_dependency("wget", "gnutls", "link") :- node("wget"), variant_value("wget", "ssl", "gnutls"). +node("gnutls") :- depends_on("wget", "gnutls"), node("wget"), variant_value("wget", "ssl", "gnutls"). + +declared_dependency("wget", "libiconv", "build"). +declared_dependency("wget", "libiconv", "link"). +node("libiconv") :- depends_on("wget", "libiconv"), node("wget"). + +declared_dependency("wget", "libpsl", "build") :- node("wget"), variant_value("wget", "libpsl", "True"). +declared_dependency("wget", "libpsl", "link") :- node("wget"), variant_value("wget", "libpsl", "True"). +node("libpsl") :- depends_on("wget", "libpsl"), node("wget"), variant_value("wget", "libpsl", "True"). + +declared_dependency("wget", "openssl", "build") :- node("wget"), variant_value("wget", "ssl", "openssl"). +declared_dependency("wget", "openssl", "link") :- node("wget"), variant_value("wget", "ssl", "openssl"). +node("openssl") :- depends_on("wget", "openssl"), node("wget"), variant_value("wget", "ssl", "openssl"). + +declared_dependency("wget", "pcre", "build") :- node("wget"), variant_value("wget", "pcre", "True"). +declared_dependency("wget", "pcre", "link") :- node("wget"), variant_value("wget", "pcre", "True"). +node("pcre") :- depends_on("wget", "pcre"), node("wget"), variant_value("wget", "pcre", "True"). + +declared_dependency("wget", "perl", "build"). +node("perl") :- depends_on("wget", "perl"), node("wget"). + +declared_dependency("wget", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("wget", "pkgconfig"), node("wget"). + +declared_dependency("wget", "python", "build") :- node("wget"), variant_value("wget", "python", "True"). +node("python") :- depends_on("wget", "python"), node("wget"), variant_value("wget", "python", "True"). +1 { version("python", "3.1.5"); version("python", "3.2.6"); version("python", "3.3.6"); version("python", "3.4.3"); version("python", "3.4.10"); version("python", "3.5.0"); version("python", "3.5.1"); version("python", "3.5.2"); version("python", "3.5.7"); version("python", "3.6.0"); version("python", "3.6.1"); version("python", "3.6.2"); version("python", "3.6.3"); version("python", "3.6.4"); version("python", "3.6.5"); version("python", "3.6.6"); version("python", "3.6.7"); version("python", "3.6.8"); version("python", "3.7.0"); version("python", "3.7.1"); version("python", "3.7.2"); version("python", "3.7.3"); version("python", "3.7.4"); version("python", "3.7.5"); version("python", "3.7.6"); version("python", "3.8.0"); version("python", "3.8.1") } 1 :- depends_on("wget", "python"), node("wget"), variant_value("wget", "python", "True"). + +declared_dependency("wget", "valgrind", "test"). +node("valgrind") :- depends_on("wget", "valgrind"), node("wget"). + +declared_dependency("wget", "zlib", "build") :- node("wget"), variant_value("wget", "zlib", "True"). +declared_dependency("wget", "zlib", "link") :- node("wget"), variant_value("wget", "zlib", "True"). +node("zlib") :- depends_on("wget", "zlib"), node("wget"), variant_value("wget", "zlib", "True"). + + +%---------------------------------------------------------------------------- +% Package: xcb-proto +%---------------------------------------------------------------------------- +version_declared("xcb-proto", "1.13", 0). +version_declared("xcb-proto", "1.12", 1). +version_declared("xcb-proto", "1.11", 2). + + +%---------------------------------------------------------------------------- +% Package: xextproto +%---------------------------------------------------------------------------- +version_declared("xextproto", "7.3.0", 0). + +declared_dependency("xextproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("xextproto", "pkgconfig"), node("xextproto"). + +declared_dependency("xextproto", "util-macros", "build"). +node("util-macros") :- depends_on("xextproto", "util-macros"), node("xextproto"). + + +%---------------------------------------------------------------------------- +% Package: xineramaproto +%---------------------------------------------------------------------------- +version_declared("xineramaproto", "1.2.1", 0). + +declared_dependency("xineramaproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("xineramaproto", "pkgconfig"), node("xineramaproto"). + +declared_dependency("xineramaproto", "util-macros", "build"). +node("util-macros") :- depends_on("xineramaproto", "util-macros"), node("xineramaproto"). + + +%---------------------------------------------------------------------------- +% Package: xproto +%---------------------------------------------------------------------------- +version_declared("xproto", "7.0.31", 0). +version_declared("xproto", "7.0.29", 1). + +declared_dependency("xproto", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("xproto", "pkgconfig"), node("xproto"). + +declared_dependency("xproto", "util-macros", "build"). +node("util-macros") :- depends_on("xproto", "util-macros"), node("xproto"). + + +%---------------------------------------------------------------------------- +% Package: xtrans +%---------------------------------------------------------------------------- +version_declared("xtrans", "1.3.5", 0). + +declared_dependency("xtrans", "pkgconfig", "build"). +node("pkgconfig") :- depends_on("xtrans", "pkgconfig"), node("xtrans"). + +declared_dependency("xtrans", "util-macros", "build"). +node("util-macros") :- depends_on("xtrans", "util-macros"), node("xtrans"). + + +%---------------------------------------------------------------------------- +% Package: xz +%---------------------------------------------------------------------------- +version_declared("xz", "5.2.4", 0). +version_declared("xz", "5.2.3", 1). +version_declared("xz", "5.2.2", 2). +version_declared("xz", "5.2.0", 3). + + +%---------------------------------------------------------------------------- +% Package: zlib +%---------------------------------------------------------------------------- +version_declared("zlib", "1.2.11", 0). +version_declared("zlib", "1.2.8", 1). +version_declared("zlib", "1.2.3", 2). + +variant("zlib", "optimize"). +variant_single_value("zlib", "optimize"). +variant_default_value("zlib", "optimize", "True"). +variant_possible_value("zlib", "optimize", "False"). +variant_possible_value("zlib", "optimize", "True"). + +variant("zlib", "pic"). +variant_single_value("zlib", "pic"). +variant_default_value("zlib", "pic", "True"). +variant_possible_value("zlib", "pic", "False"). +variant_possible_value("zlib", "pic", "True"). + +variant("zlib", "shared"). +variant_single_value("zlib", "shared"). +variant_default_value("zlib", "shared", "True"). +variant_possible_value("zlib", "shared", "False"). +variant_possible_value("zlib", "shared", "True"). + + +%============================================================================ +% Spec Constraints +%============================================================================ +root("hdf5"). + +%---------------------------------------------------------------------------- +% Spec: hdf5 +%---------------------------------------------------------------------------- +node("hdf5"). + +%=============================================================================- +% Display Results +% +% This section determines what parts of the model are printed at the end +%============================================================================== +#show node/1. +#show depends_on/3. +#show version/2. +#show variant_value/3. +#show node_platform/2. +#show node_os/2. +#show node_target/2. +#show node_compiler/2. +#show node_compiler_version/3. +#show node_flag/3. +#show node_flag_compiler_default/1. +#show node_flag_source/2. +#show no_flags/2. diff --git a/lib/spack/spack/solver/old_concretizer.lp b/lib/spack/spack/solver/old_concretizer.lp new file mode 100644 index 00000000000..b2e698b5ff0 --- /dev/null +++ b/lib/spack/spack/solver/old_concretizer.lp @@ -0,0 +1,282 @@ +%============================================================================= +% Generate +%============================================================================= + +%----------------------------------------------------------------------------- +% Version semantics +%----------------------------------------------------------------------------- + +% versions are declared w/priority -- declared with priority implies declared +version_declared(P, V) :- version_declared(P, V, _). + +% If something is a package, it has only one version and that must be a +% possible version. +1 { version(P, V) : version_possible(P, V) } 1 :- node(P). + +% If a version is declared but conflicted, it's not possible. +version_possible(P, V) :- version_declared(P, V), not version_conflict(P, V). + +version_weight(P, V, N) :- version(P, V), version_declared(P, V, N). + +#defined version_conflict/2. + +%----------------------------------------------------------------------------- +% Dependency semantics +%----------------------------------------------------------------------------- +% Dependencies of any type imply that one package "depends on" another +depends_on(P, D) :- depends_on(P, D, _). + +% declared dependencies are real if they're not virtual +depends_on(P, D, T) :- declared_dependency(P, D, T), not virtual(D), node(P). + +% if you declare a dependency on a virtual, you depend on one of its providers +1 { depends_on(P, Q, T) : provides_virtual(Q, V) } 1 + :- declared_dependency(P, V, T), virtual(V), node(P). + +% if a virtual was required by some root spec, one provider is in the DAG +1 { node(P) : provides_virtual(P, V) } 1 :- virtual_node(V). + +% for any virtual, there can be at most one provider in the DAG +provider(P, V) :- node(P), provides_virtual(P, V). +0 { provider(P, V) : node(P) } 1 :- virtual(V). + +% give dependents the virtuals they want +provider_weight(D, N) + :- virtual(V), depends_on(P, D), provider(D, V), + pkg_provider_preference(P, V, D, N). +provider_weight(D, N) + :- virtual(V), depends_on(P, D), provider(D, V), + not pkg_provider_preference(P, V, D, _), + default_provider_preference(V, D, N). + +% if there's no preference for something, it costs 100 to discourage its +% use with minimization +provider_weight(D, 100) + :- virtual(V), depends_on(P, D), provider(D, V), + not pkg_provider_preference(P, V, D, _), + not default_provider_preference(V, D, _). + +% all nodes must be reachable from some root +needed(D) :- root(D), node(D). +needed(D) :- root(P), depends_on(P, D). +needed(D) :- needed(P), depends_on(P, D), node(P). +:- node(P), not needed(P). + +% real dependencies imply new nodes. +node(D) :- node(P), depends_on(P, D). + +% do not warn if generated program contains none of these. +#defined depends_on/3. +#defined declared_dependency/3. +#defined virtual/1. +#defined virtual_node/1. +#defined provides_virtual/2. +#defined pkg_provider_preference/4. +#defined default_provider_preference/3. +#defined root/1. + +%----------------------------------------------------------------------------- +% Variant semantics +%----------------------------------------------------------------------------- +% one variant value for single-valued variants. +1 { variant_value(P, V, X) : variant_possible_value(P, V, X) } 1 + :- node(P), variant(P, V), variant_single_value(P, V). + +% at least one variant value for multi-valued variants. +1 { variant_value(P, V, X) : variant_possible_value(P, V, X) } + :- node(P), variant(P, V), not variant_single_value(P, V). + +% if a variant is set to anything, it is considered 'set'. +variant_set(P, V) :- variant_set(P, V, _). + +% variant_set is an explicitly set variant value. If it's not 'set', +% we revert to the default value. If it is set, we force the set value +variant_value(P, V, X) :- node(P), variant(P, V), variant_set(P, V, X). + +% prefer default values. +variant_not_default(P, V, X, 1) + :- variant_value(P, V, X), + not variant_default_value(P, V, X), + node(P). + +variant_not_default(P, V, X, 0) + :- variant_value(P, V, X), + variant_default_value(P, V, X), + node(P). + +% suppress wranings about this atom being unset. It's only set if some +% spec or some package sets it, and without this, clingo will give +% warnings like 'info: atom does not occur in any rule head'. +#defined variant/2. +#defined variant_set/3. +#defined variant_single_value/2. +#defined variant_default_value/3. +#defined variant_possible_value/3. + +%----------------------------------------------------------------------------- +% Platform/OS semantics +%----------------------------------------------------------------------------- +% one platform, os per node +% TODO: convert these to use optimization, like targets. +1 { node_platform(P, A) : node_platform(P, A) } 1 :- node(P). +1 { node_os(P, A) : node_os(P, A) } 1 :- node(P). + +% arch fields for pkg P are set if set to anything +node_platform_set(P) :- node_platform_set(P, _). +node_os_set(P) :- node_os_set(P, _). + +% if no platform/os is set, fall back to the defaults +node_platform(P, A) + :- node(P), not node_platform_set(P), node_platform_default(A). +node_os(P, A) :- node(P), not node_os_set(P), node_os_default(A). + +% setting os/platform on a node is a hard constraint +node_platform(P, A) :- node(P), node_platform_set(P, A). +node_os(P, A) :- node(P), node_os_set(P, A). + +% avoid info warnings (see variants) +#defined node_platform_set/2. +#defined node_os_set/2. + +%----------------------------------------------------------------------------- +% Target semantics +%----------------------------------------------------------------------------- +% one target per node -- optimization will pick the "best" one +1 { node_target(P, T) : target(T) } 1 :- node(P). + +% can't use targets on node if the compiler for the node doesn't support them +:- node_target(P, T), not compiler_supports_target(C, V, T), + node_compiler(P, C), node_compiler_version(P, C, V). + +% if a target is set explicitly, respect it +node_target(P, T) :- node(P), node_target_set(P, T). + +% each node has the weight of its assigned target +node_target_weight(P, N) :- node(P), node_target(P, T), target_weight(T, N). + +#defined node_target_set/2. + +%----------------------------------------------------------------------------- +% Compiler semantics +%----------------------------------------------------------------------------- + +% one compiler per node +1 { node_compiler(P, C) : compiler(C) } 1 :- node(P). +1 { node_compiler_version(P, C, V) : compiler_version(C, V) } 1 :- node(P). +1 { compiler_weight(P, N) : compiler_weight(P, N) } 1 :- node(P). + +% dependencies imply we should try to match hard compiler constraints +% todo: look at what to do about intersecting constraints here. we'd +% ideally go with the "lowest" pref in the DAG +node_compiler_match_pref(P, C) :- node_compiler_hard(P, C). +node_compiler_match_pref(D, C) + :- depends_on(P, D), node_compiler_match_pref(P, C), + not node_compiler_hard(D, _). +compiler_match(P, 1) :- node_compiler(P, C), node_compiler_match_pref(P, C). + +node_compiler_version_match_pref(P, C, V) + :- node_compiler_version_hard(P, C, V). +node_compiler_version_match_pref(D, C, V) + :- depends_on(P, D), node_compiler_version_match_pref(P, C, V), + not node_compiler_version_hard(D, C, _). +compiler_version_match(P, 1) + :- node_compiler_version(P, C, V), + node_compiler_version_match_pref(P, C, V). + +#defined node_compiler_hard/2. +#defined node_compiler_version_hard/3. + +% compilers weighted by preference acccording to packages.yaml +compiler_weight(P, N) + :- node_compiler(P, C), node_compiler_version(P, C, V), + node_compiler_preference(P, C, V, N). +compiler_weight(P, N) + :- node_compiler(P, C), node_compiler_version(P, C, V), + not node_compiler_preference(P, C, _, _), + default_compiler_preference(C, V, N). +compiler_weight(P, 100) + :- node_compiler(P, C), node_compiler_version(P, C, V), + not node_compiler_preference(P, C, _, _), + not default_compiler_preference(C, _, _). + +#defined node_compiler_preference/4. +#defined default_compiler_preference/3. + +%----------------------------------------------------------------------------- +% Compiler flags +%----------------------------------------------------------------------------- +% propagate flags when compilers match +inherit_flags(P, D) + :- depends_on(P, D), node_compiler(P, C), node_compiler(D, C), + compiler(C), flag_type(T). +node_flag_inherited(D, T, F) :- node_flag_set(P, T, F), inherit_flags(P, D). +node_flag_inherited(D, T, F) + :- node_flag_inherited(P, T, F), inherit_flags(P, D). + +% node with flags set to anythingg is "set" +node_flag_set(P) :- node_flag_set(P, _, _). + +% remember where flags came from +node_flag_source(P, P) :- node_flag_set(P). +node_flag_source(D, Q) :- node_flag_source(P, Q), inherit_flags(P, D). + +% compiler flags from compilers.yaml are put on nodes if compiler matches +node_flag(P, T, F), +node_flag_compiler_default(P) + :- not node_flag_set(P), compiler_version_flag(C, V, T, F), + node_compiler(P, C), node_compiler_version(P, C, V), + flag_type(T), compiler(C), compiler_version(C, V). + +% if a flag is set to something or inherited, it's included +node_flag(P, T, F) :- node_flag_set(P, T, F). +node_flag(P, T, F) :- node_flag_inherited(P, T, F). + +% if no node flags are set for a type, there are no flags. +no_flags(P, T) :- not node_flag(P, T, _), node(P), flag_type(T). + +#defined compiler_version_flag/4. +#defined node_flag/3. +#defined node_flag_set/3. + +%----------------------------------------------------------------------------- +% How to optimize the spec (high to low priority) +%----------------------------------------------------------------------------- +% weight root preferences higher +% +% TODO: how best to deal with this issue? It's not clear how best to +% weight all the constraints. Without this root preference, `spack solve +% hdf5` will pick mpich instead of openmpi, even if openmpi is the +% preferred provider, because openmpi has a version constraint on hwloc. +% It ends up choosing between settling for an old version of hwloc, or +% picking the second-best provider. This workaround weights root +% preferences higher so that hdf5's prefs are more important, but it's +% not clear this is a general solution. It would be nice to weight by +% distance to root, but that seems to slow down the solve a lot. +% +% One option is to make preferences hard constraints. Or maybe we need +% to look more closely at where a constraint came from and factor that +% into our weights. e.g., a non-default variant resulting from a version +% constraint counts like a version constraint. Needs more thought later. +% +root(D, 2) :- root(D), node(D). +root(D, 1) :- not root(D), node(D). + +% prefer default variants +#minimize { N*R@10,P,V,X : variant_not_default(P, V, X, N), root(P, R) }. + +% pick most preferred virtual providers +#minimize{ N*R@9,D : provider_weight(D, N), root(P, R) }. + +% prefer more recent versions. +#minimize{ N@8,P,V : version_weight(P, V, N) }. + +% compiler preferences +#maximize{ N@7,P : compiler_match(P, N) }. +#minimize{ N@6,P : compiler_weight(P, N) }. + +% fastest target for node + +% TODO: if these are slightly different by compiler (e.g., skylake is +% best, gcc supports skylake and broadweell, clang's best is haswell) +% things seem to get really slow. +#minimize{ N@5,P : node_target_weight(P, N) }. From 97d46dc36f2512e5d93f640499100c8bf5ce0f8f Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 23 Feb 2020 16:57:45 -0800 Subject: [PATCH 223/238] update CHANGELOG.md for 0.14.0 --- CHANGELOG.md | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fef5553c8fb..47657b98257 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,100 @@ +# v0.14.0 (2020-02-23) + +`v0.14.0` is a major feature release, with 3 highlighted features: + +1. **Distributed builds.** Multiple Spack instances will now coordinate + properly with each other through locks. This works on a single node + (where you've called `spack` several times) or across multiple nodes + with a shared filesystem. For example, with SLURM, you could build + `trilinos` and its dependencies on 2 24-core nodes, with 3 Spack + instances per node and 8 build jobs per instance, with `srun -N 2 -n 6 + spack install -j 8 trilinos`. This requires a filesystem with locking + enabled, but not MPI or any other library for parallelism. + +2. **Build pipelines.** You can also build in parallel through Gitlab + CI. Simply create a Spack environment and push it to Gitlab to build + on Gitlab runners. Pipeline support is now integreated into a single + `spack ci` command, so setting it up is easier than ever. See the + [Pipelines section](https://spack.readthedocs.io/en/v0.14.0/pipelines.html) + in the docs. + +3. **Container builds.** The new `spack containerize` command allows you + to create a Docker or Singularity recipe from any Spack environment. + There are options to customize the build if you need them. See the + [Container Images section](https://spack.readthedocs.io/en/latest/containers.html) + in the docs. + +In addition, there are several other new commands, many bugfixes and +improvements, and `spack load` no longer requires modules, so you can use +it the same way on your laptop or on your supercomputer. + +Spack grew by over 300 packages since our last release in November 2019, +and the project grew to over 500 contributors. Thanks to all of you for +making yet another great release possible. Detailed notes below. + +## Major new core features +* Distributed builds: spack instances coordinate and build in parallel (#13100) +* New `spack ci` command to manage CI pipelines (#12854) +* Generate container recipes from environments: `spack containerize` (#14202) +* `spack load` now works without using modules (#14062, #14628) +* Garbage collect old/unused installations with `spack gc` (#13534) +* Configuration files all set environment modifications the same way (#14372, + [docs](https://spack.readthedocs.io/en/v0.14.0/configuration.html#environment-modifications)) +* `spack commands --format=bash` auto-generates completion (#14393, #14607) +* Packages can specify alternate fetch URLs in case one fails (#13881) + +## Improvements +* Improved locking for concurrency with environments (#14676, #14621, #14692) +* `spack test` sends args to `pytest`, supports better listing (#14319) +* Better support for aarch64 and cascadelake microarch (#13825, #13780, #13820) +* Archspec is now a separate library (see https://github.com/archspec/archspec) +* Many improvements to the `spack buildcache` command (#14237, #14346, + #14466, #14467, #14639, #14642, #14659, #14696, #14698, #14714, #14732, + #14929, #15003, #15086, #15134) + +## Selected Bugfixes +* Compilers now require an exact match on version (#8735, #14730, #14752) +* Bugfix for patches that specified specific versions (#13989) +* `spack find -p` now works in environments (#10019, #13972) +* Dependency queries work correctly in `spack find` (#14757) +* Bugfixes for locking upstream Spack instances chains (#13364) +* Fixes for PowerPC clang optimization flags (#14196) +* Fix for issue with compilers and specific microarchitectures (#13733, #14798) + +## New commands and options +* `spack ci` (#12854) +* `spack containerize` (#14202) +* `spack gc` (#13534) +* `spack load` accepts `--only package`, `--only dependencies` (#14062, #14628) +* `spack commands --format=bash` (#14393) +* `spack commands --update-completion` (#14607) +* `spack install --with-cache` has new option: `--no-check-signature` (#11107) +* `spack test` now has `--list`, `--list-long`, and `--list-names` (#14319) +* `spack install --help-cdash` moves CDash help out of the main help (#13704) + +## Deprecations +* `spack release-jobs` has been rolled into `spack ci` +* `spack bootstrap` will be removed in a future version, as it is no longer + needed to set up modules (see `spack load` improvements above) + +## Documentation +* New section on building container images with Spack (see + [docs](https://spack.readthedocs.io/en/latest/containers.html)) +* New section on using `spack ci` command to build pipelines (see + [docs](https://spack.readthedocs.io/en/latest/pipelines.html)) +* Document how to add conditional dependencies (#14694) +* Document how to use Spack to replace Homebrew/Conda (#13083, see + [docs](https://spack.readthedocs.io/en/latest/workflows.html#using-spack-to-replace-homebrew-conda)) + +## Important package changes +* 3,908 total packages (345 added since 0.13.0) +* Added first cut at a TensorFlow package (#13112) +* We now build R without "recommended" packages, manage them w/Spack (#12015) +* Elpa and OpenBLAS now leverage microarchitecture support (#13655, #14380) +* Fix `octave` compiler wrapper usage (#14726) +* Enforce that packages in `builtin` aren't missing dependencies (#13949) + + # v0.13.4 (2020-02-07) This release contains several bugfixes: From fd3c08e925693434bb814ff22bace57c1cc3d373 Mon Sep 17 00:00:00 2001 From: darmac Date: Mon, 24 Feb 2020 12:07:39 +0800 Subject: [PATCH 224/238] add new package : bubblewrap (#15162) * add new package : bubblewrap * bubblewrap: remove some comment in package.py --- .../builtin/packages/bubblewrap/package.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 var/spack/repos/builtin/packages/bubblewrap/package.py diff --git a/var/spack/repos/builtin/packages/bubblewrap/package.py b/var/spack/repos/builtin/packages/bubblewrap/package.py new file mode 100644 index 00000000000..dc00c56148a --- /dev/null +++ b/var/spack/repos/builtin/packages/bubblewrap/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Bubblewrap(AutotoolsPackage): + """Unprivileged sandboxing tool""" + + homepage = "https://github.com/containers/bubblewrap" + url = "https://github.com/containers/bubblewrap/archive/v0.4.0.tar.gz" + + version('0.4.0', sha256='dedea228f53dd5f589d8225b4584a9b354849a221caf7304874ca2e4d4bcdafb') + version('0.3.3', sha256='439e4cd84d9d19c9e5b0c6aa0f0c3a55bbb893ae5ec112a5b575eadd2165f039') + version('0.3.2', sha256='c66c1b6da3257e06b38a339611e76b21dc52a47975d55429071c22455259d010') + version('0.3.1', sha256='3757cb021d1a3ccc36828a58363817e1923c458ed03260d0c2b3a99da61bfb81') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + depends_on('libcap') + + def autoreconf(self, spec, prefix): + bash = which('bash') + bash('autogen.sh') From edca0e9da24b209d6a7b9a8248ab0d0f503bda12 Mon Sep 17 00:00:00 2001 From: darmac Date: Mon, 24 Feb 2020 12:08:03 +0800 Subject: [PATCH 225/238] add new package : batctl (#15160) * add new package : batctl * batctl: move binary to bin/ --- .../repos/builtin/packages/batctl/package.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 var/spack/repos/builtin/packages/batctl/package.py diff --git a/var/spack/repos/builtin/packages/batctl/package.py b/var/spack/repos/builtin/packages/batctl/package.py new file mode 100644 index 00000000000..45bd5ecd733 --- /dev/null +++ b/var/spack/repos/builtin/packages/batctl/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Batctl(MakefilePackage): + """B.A.T.M.A.N. advanced control and management tool""" + + homepage = "https://github.com/open-mesh-mirror/batctl" + url = "https://github.com/open-mesh-mirror/batctl/archive/v2019.5.tar.gz" + + version('2019.5', sha256='ffe5857a33068ec174140c154610d76d833524d840a2fc2d1a15e16686213cad') + version('2019.4', sha256='a3564eb9727335352dc0cfa2f2b29474c2c837384689ac5fcb387784a56e7685') + version('2019.3', sha256='2bd93fa14925a8dc63a67e64266c8ccd2fa3ac44b10253d93e6f8a630350070c') + version('2019.2', sha256='fb656208ff7d4cd8b1b422f60c9e6d8747302a347cbf6c199d7afa9b80f80ea3') + + depends_on('libnl') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('batctl', prefix.bin) From 6615fbccbc60a1d1acb2e4e8f126336c5e068cec Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Sun, 23 Feb 2020 22:15:47 -0600 Subject: [PATCH 226/238] Update py-rseqc package (#15176) This PR depends on #15175 - add updated version - set depedencies --- .../repos/builtin/packages/py-rseqc/package.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-rseqc/package.py b/var/spack/repos/builtin/packages/py-rseqc/package.py index 1b3ac0a88a2..fa9fc581b4f 100644 --- a/var/spack/repos/builtin/packages/py-rseqc/package.py +++ b/var/spack/repos/builtin/packages/py-rseqc/package.py @@ -14,10 +14,16 @@ class PyRseqc(PythonPackage): homepage = "http://rseqc.sourceforge.net" url = "https://pypi.io/packages/source/R/RSeQC/RSeQC-2.6.4.tar.gz" + version('3.0.1', sha256='d5f4cb2c24a7348929f5c4947d84c5869e8cd2cba5ba5248d991ebb37c4c6b3d') version('2.6.4', sha256='e11df661bda1c24fc950f0bce06f586a68ab5f4a2c356f43e4a0dfdc1e184315') + depends_on('python@2.7:2.8', type=('build', 'run'), when='@:2') + depends_on('python@3.5:', type=('build', 'run'), when='@3:') depends_on('py-setuptools', type='build') - depends_on('py-bx-python', type=('build', 'run')) - depends_on('py-numpy', type=('build', 'run')) - depends_on('py-pysam', type=('build', 'run')) - depends_on('r', type=('build', 'run')) + depends_on('py-nose@0.10.4:', type='build') + depends_on('py-cython@0.17:', type=('build', 'run')) + depends_on('py-bx-python', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-pysam', type=('build', 'run')) + depends_on('py-pybigwig', type=('build', 'run'), when='@3:') + depends_on('r', type='run') From c2e1319f2dc968e2f78302e3ddc4693335440369 Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Mon, 24 Feb 2020 07:54:08 -0600 Subject: [PATCH 227/238] Update py-bx-python package (#15175) * Update py-bx-python package - add update to py-bx-python - switch to pypi downloads - set dependencies * Update var/spack/repos/builtin/packages/py-bx-python/package.py I had initially pulled version 0.8.6 and then updated that to 0.8.8 but missed the change in the python specs between those two versions. Co-Authored-By: Adam J. Stewart * Fix version 0.7.4 - set dependency on python2 - add dependency on py-python-lzo - add py-python-lzo package - set py-numpy dependency to correspond to latest version that works with python2 * Add constraint for py-six dependency * Update var/spack/repos/builtin/packages/py-bx-python/package.py Ah, I had that `when` clause in and then took it out as it did not seem to be needed. I guess it is always better to be more explicit. Co-Authored-By: Adam J. Stewart * Remove py-numpy constraint Let the concretizer catch the conflict with python2 and py-numpy versions. Co-authored-by: Adam J. Stewart --- .../builtin/packages/py-bx-python/package.py | 15 +++++++++++---- .../builtin/packages/py-python-lzo/package.py | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-python-lzo/package.py diff --git a/var/spack/repos/builtin/packages/py-bx-python/package.py b/var/spack/repos/builtin/packages/py-bx-python/package.py index ee4dfff7fce..3d73b21d186 100644 --- a/var/spack/repos/builtin/packages/py-bx-python/package.py +++ b/var/spack/repos/builtin/packages/py-bx-python/package.py @@ -11,10 +11,17 @@ class PyBxPython(PythonPackage): to allow for rapid implementation of genome scale analyses.""" homepage = "https://github.com/bxlab/bx-python" - url = "https://github.com/bxlab/bx-python/archive/v0.7.4.tar.gz" + url = "https://pypi.io/packages/source/b/bx-python/bx-python-0.8.8.tar.gz" - version('0.7.4', sha256='1066d1e56d062d0661f23c19942eb757bd7ab7cb8bc7d89a72fdc3931c995cb4') + version('0.8.8', sha256='ad0808ab19c007e8beebadc31827e0d7560ac0e935f1100fb8cc93607400bb47') + version('0.7.4', + sha256='1066d1e56d062d0661f23c19942eb757bd7ab7cb8bc7d89a72fdc3931c995cb4', + url="https://github.com/bxlab/bx-python/archive/v0.7.4.tar.gz") + depends_on('python@2.4:2.7', type=('build', 'run'), when='@:0.7') + depends_on('python@2.7:2.8,3.5:', type=('build', 'run'), when='@0.8:') depends_on('py-setuptools', type='build') - depends_on('py-numpy', type=('build', 'run')) - depends_on('py-six', type=('build', 'run')) + depends_on('py-python-lzo', type=('build', 'run'), when='@:0.7') + depends_on('py-cython', type='build', when='@0.8:') + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-six', type=('build', 'run'), when='@0.8:') diff --git a/var/spack/repos/builtin/packages/py-python-lzo/package.py b/var/spack/repos/builtin/packages/py-python-lzo/package.py new file mode 100644 index 00000000000..acf60351b76 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-python-lzo/package.py @@ -0,0 +1,18 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class PyPythonLzo(PythonPackage): + """This module provides Python bindings for the LZO data compression + library.""" + + homepage = "https://github.com/jd-boyd/python-lzo" + url = "https://pypi.io/packages/source/p/python-lzo/python-lzo-1.12.tar.gz" + + version('1.12', sha256='97a8e46825e8f1abd84c2a3372bc09adae9745a5be5d3af2692cd850dac35345') + + depends_on('lzo') From 79dcf835b22cfe34b519706781e564d280663c28 Mon Sep 17 00:00:00 2001 From: Robert Underwood Date: Mon, 24 Feb 2020 08:55:39 -0500 Subject: [PATCH 228/238] sz: update to version 2.1.8.1 (#15154) The newer versions of SZ now uses CMake to build. --- .../repos/builtin/packages/sz/package.py | 95 ++++++++++++++++--- 1 file changed, 82 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py index 3453a5675e0..774e123bf3f 100644 --- a/var/spack/repos/builtin/packages/sz/package.py +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -3,21 +3,19 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - from spack import * -class Sz(AutotoolsPackage): - """Error-bounded Lossy Compressor for HPC Data.""" +class Sz(CMakePackage): + """Error-bounded Lossy Compressor for HPC Data""" homepage = "https://collab.cels.anl.gov/display/ESR/SZ" url = "https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz" + git = "https://github.com/disheng222/sz" maintainers = ['disheng222'] - parallel = False - - git = "https://github.com/disheng222/SZ.git" version('develop', branch='master') + version('2.1.8.1', sha256='a27c9c9da16c9c4232c54813ba79178945f47609043f11501d49a171e47d3f46') version('2.1.8.0', sha256='8d6bceb59a03d52e601e29d9b35c21b146c248abae352f9a4828e91d8d26aa24') version('2.0.2.0', sha256='176c65b421bdec8e91010ffbc9c7bf7852c799972101d6b66d2a30d9702e59b0') version('1.4.13.5', sha256='b5e37bf3c377833eed0a7ca0471333c96cd2a82863abfc73893561aaba5f18b9') @@ -32,17 +30,88 @@ class Sz(AutotoolsPackage): version('1.4.10.0', sha256='cf23cf1ffd7c69c3d3128ae9c356b6acdc03a38f92c02db5d9bfc04f3fabc506') version('1.4.9.2', sha256='9dc785274d068d04c2836955fc93518a9797bfd409b46fea5733294b7c7c18f8') - variant('fortran', default=False, - description='Enable fortran compilation') + variant('python', default=False, description="builds the python wrapper") + variant('netcdf', default=False, description="build the netcdf reader") + variant('hdf5', default=False, description="build the hdf5 filter") + variant('pastri', default=False, description="build the pastri mode") + variant('time_compression', default=False, description="build the time based compression mode") + variant('random_access', default=False, description="build the random access compression mode") + variant('fortran', default=False, description='Enable fortran compilation') + variant('shared', default=True, description="build shared versions of the libraries") # Part of latest sources don't support -O3 optimization # with Fujitsu compiler. patch('fix_optimization.patch', when='@2.0.2.0:%fj') - def configure_args(self): - args = [] - if '+fortran' in self.spec: - args += ['--enable-fortran'] + depends_on('zlib') + depends_on('zstd') + + extends('python', when="+python") + depends_on('python@3:', when="+python", type=('build', 'link', 'run')) + depends_on('swig@3.12:', when="+python", type='build') + depends_on('py-numpy', when="+python", type=('build', 'link', 'run')) + depends_on('hdf5', when="+hdf5") + depends_on('netcdf-c', when="+netcdf") + + @property + def build_directory(self): + """autotools needs a different build directory to work""" + if self.version >= Version("2.1.8.1"): + return "spack-build" else: - args += ['--disable-fortran'] + return "." + + @when("@:2.1.8.0") + def cmake(self, spec, prefix): + """use autotools before 2.1.8.1""" + configure_args = ["--prefix=" + prefix] + if "+fortran" in spec: + configure_args.append("--enable-fortran") + else: + configure_args.append("--disable-fortran") + configure(*configure_args) + + def cmake_args(self): + """configure the package with CMake for version 2.1.8.1 and later""" + args = [] + + if "+python" in self.spec: + args.append("-DBUILD_PYTHON_WRAPPER=ON") + else: + args.append("-DBUILD_PYTHON_WRAPPER=OFF") + + if "+netcdf" in self.spec: + args.append("-DBUILD_NETCDF_READER=ON") + else: + args.append("-DBUILD_NETCDF_READER=OFF") + + if "+hdf5" in self.spec: + args.append("-DBUILD_HDF5_FILTER=ON") + else: + args.append("-DBUILD_HDF5_FILTER=OFF") + + if "+pastri" in self.spec: + args.append("-DBUILD_PASTRI=ON") + else: + args.append("-DBUILD_PASTRI=OFF") + + if "+time_compression" in self.spec: + args.append("-DBUILD_TIMECMPR=ON") + else: + args.append("-DBUILD_TIMECMPR=OFF") + + if "+random_access" in self.spec: + args.append("-DBUILD_RANDOMACCESS=ON") + else: + args.append("-DBUILD_RANDOMACCESS=OFF") + + if "+fortran" in self.spec: + args.append("-DBUILD_FORTRAN=ON") + else: + args.append("-DBUILD_FORTRAN=OFF") + + if "+shared" in self.spec: + args.append("-DBUILD_SHARED_LIBS=ON") + else: + args.append("-DBUILD_SHARED_LIBS=OFF") return args From 48d6da3b6e3bfa941e41a4560edace4674adc71b Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 24 Feb 2020 14:59:59 +0100 Subject: [PATCH 229/238] Added extra versions of OCaml (#15177) * Aded extra versions for OCaml * Added maintainer --- var/spack/repos/builtin/packages/ocaml/package.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/var/spack/repos/builtin/packages/ocaml/package.py b/var/spack/repos/builtin/packages/ocaml/package.py index 34ff99eb939..f155c55c13d 100644 --- a/var/spack/repos/builtin/packages/ocaml/package.py +++ b/var/spack/repos/builtin/packages/ocaml/package.py @@ -13,11 +13,22 @@ class Ocaml(Package): homepage = "http://ocaml.org/" url = "https://caml.inria.fr/pub/distrib/ocaml-4.06/ocaml-4.06.0.tar.gz" + maintainers = ['scemama'] + + version('4.10.0', sha256='58d431dde66f5750ebe9b15d5a1c4872f80d283dec23448689b0d1a498b7e4c7') + version('4.09.0', sha256='2b728f8a0e90da14f22fdc04660f2ab33819cdbb12bff0ceae3fdbb0133cf7a6') + version('4.08.1', sha256='ee50118ee88472fd4b64311fa560f8f8ab66a1899f0117815c69a16070980f78') + version('4.08.0', sha256='e6e244f893f2070ebcdeac0637fbe2054fd82deebefefa3e3ed85a405cd4ecd8') + version('4.07.1', sha256='2ad43be17ed5c74ea27887ae0cc4793b835408180c0b9175bc9ad53082a59af4') + version('4.07.0', sha256='50e10b0c4e28300cb889e56839ec9e07e2847a85e04bfbd5a7ed0290b7239ef8') + version('4.06.1', sha256='0c38c6f531103e87fab1c218a7e76287d7cb4d7ee4dea64e7f85952af3b1b50e') version('4.06.0', sha256='c17578e243c4b889fe53a104d8927eb8749c7be2e6b622db8b3c7b386723bf50') version('4.03.0', sha256='7fdf280cc6c0a2de4fc9891d0bf4633ea417046ece619f011fd44540fcfc8da2') depends_on('ncurses') + sanity_check_file = ['bin/ocaml'] + def url_for_version(self, version): url = "http://caml.inria.fr/pub/distrib/ocaml-{0}/ocaml-{1}.tar.gz" return url.format(str(version)[:-2], version) From b1e097b0350a032f15c41aa619dcd80c9ad967f9 Mon Sep 17 00:00:00 2001 From: darmac Date: Mon, 24 Feb 2020 22:00:34 +0800 Subject: [PATCH 230/238] add new package : agrep (#15165) * add new package : agrep * agrep: move binary to bin/ --- .../repos/builtin/packages/agrep/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/agrep/package.py diff --git a/var/spack/repos/builtin/packages/agrep/package.py b/var/spack/repos/builtin/packages/agrep/package.py new file mode 100644 index 00000000000..dce047ad05a --- /dev/null +++ b/var/spack/repos/builtin/packages/agrep/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Agrep(MakefilePackage): + """AGREP - an approximate GREP. + Fast searching files for a string or regular expression, + with approximate matching capabilities and user-definable records. + Developed 1989-1991 by Udi Manber, Sun Wu et al. at the University + of Arizona.""" + + homepage = "http://www.tgries.de/agrep" + url = "https://www.tgries.de/agrep/agrep-3.41.tgz" + + version('3.41', sha256='0508eafaf9725fc67cc955eb6d32ba4f50138443a4fea4275508d2c3f67a234e') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('agrep', prefix.bin) From a38eb70e305e94efac0af9a781479a65650c184e Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Mon, 24 Feb 2020 15:34:57 +0100 Subject: [PATCH 231/238] modules: store configure args during build (#11084) This change stores packages' configure arguments during build and makes use of them while refreshing module files. This fixes problems such as in #10716. --- lib/spack/spack/installer.py | 16 ++++++++++++++++ lib/spack/spack/modules/common.py | 13 +++---------- lib/spack/spack/package.py | 15 +++++++++++++++ lib/spack/spack/test/install.py | 8 +++++++- 4 files changed, 41 insertions(+), 11 deletions(-) diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index f4f39f26409..714dc0f31cc 100755 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -463,6 +463,10 @@ def log(pkg): # Archive the environment used for the build install(pkg.env_path, pkg.install_env_path) + if os.path.exists(pkg.configure_args_path): + # Archive the args used for the build + install(pkg.configure_args_path, pkg.install_configure_args_path) + # Finally, archive files that are specific to each package with working_dir(pkg.stage.path): errors = six.StringIO() @@ -1013,6 +1017,18 @@ def build_process(): # Save the build environment in a file before building. dump_environment(pkg.env_path) + for attr in ('configure_args', 'cmake_args'): + try: + configure_args = getattr(pkg, attr)() + configure_args = ' '.join(configure_args) + + with open(pkg.configure_args_path, 'w') as args_file: + args_file.write(configure_args) + + break + except Exception: + pass + # cache debug settings debug_enabled = tty.is_debug() diff --git a/lib/spack/spack/modules/common.py b/lib/spack/spack/modules/common.py index d9407a1bf66..d6fb536e8fd 100644 --- a/lib/spack/spack/modules/common.py +++ b/lib/spack/spack/modules/common.py @@ -623,16 +623,9 @@ def configure_options(self): msg = 'unknown, software installed outside of Spack' return msg - # This is quite simple right now, but contains information on how - # to call different build system classes. - for attr in ('configure_args', 'cmake_args'): - try: - configure_args = getattr(pkg, attr)() - return ' '.join(configure_args) - except (AttributeError, IOError, KeyError): - # The method doesn't exist in the current spec, - # or it's not usable - pass + if os.path.exists(pkg.install_configure_args_path): + with open(pkg.install_configure_args_path, 'r') as args_file: + return args_file.read() # Returning a false-like value makes the default templates skip # the configure option section diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index d123f58cdf8..b7efc3989bc 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -68,6 +68,9 @@ # Filename for the Spack build/install environment file. _spack_build_envfile = 'spack-build-env.txt' +# Filename for the Spack configure args file. +_spack_configure_argsfile = 'spack-configure-args.txt' + class InstallPhase(object): """Manages a single phase of the installation. @@ -896,6 +899,18 @@ def install_log_path(self): # Otherwise, return the current install log path name. return os.path.join(install_path, _spack_build_logfile) + @property + def configure_args_path(self): + """Return the configure args file path associated with staging.""" + return os.path.join(self.stage.path, _spack_configure_argsfile) + + @property + def install_configure_args_path(self): + """Return the configure args file path on successful installation.""" + install_path = spack.store.layout.metadata_path(self.spec) + + return os.path.join(install_path, _spack_configure_argsfile) + def _make_fetcher(self): # Construct a composite fetcher that always contains at least # one element (the root package). In case there are resources diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py index f53a760f702..ff7f5a33556 100644 --- a/lib/spack/spack/test/install.py +++ b/lib/spack/spack/test/install.py @@ -15,7 +15,8 @@ import spack.repo import spack.store from spack.spec import Spec -from spack.package import _spack_build_envfile, _spack_build_logfile +from spack.package import (_spack_build_envfile, _spack_build_logfile, + _spack_configure_argsfile) def test_install_and_uninstall(install_mockery, mock_fetch, monkeypatch): @@ -410,6 +411,9 @@ def test_pkg_install_paths(install_mockery): env_path = os.path.join(spec.prefix, '.spack', _spack_build_envfile) assert spec.package.install_env_path == env_path + args_path = os.path.join(spec.prefix, '.spack', _spack_configure_argsfile) + assert spec.package.install_configure_args_path == args_path + # Backward compatibility checks log_dir = os.path.dirname(log_path) mkdirp(log_dir) @@ -448,6 +452,7 @@ def test_pkg_install_log(install_mockery): with working_dir(log_dir): touch(log_path) touch(spec.package.env_path) + touch(spec.package.configure_args_path) install_path = os.path.dirname(spec.package.install_log_path) mkdirp(install_path) @@ -456,6 +461,7 @@ def test_pkg_install_log(install_mockery): assert os.path.exists(spec.package.install_log_path) assert os.path.exists(spec.package.install_env_path) + assert os.path.exists(spec.package.install_configure_args_path) # Cleanup shutil.rmtree(log_dir) From 94acd8f235d8131939a2485dae7fc98177b87901 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Mon, 24 Feb 2020 16:46:41 +0100 Subject: [PATCH 232/238] cmd/load: Fix usage output (#15180) args.specs is a list, which results in output like this: ``` eval `spack load --sh ['libxml2', 'xz']` ``` We want this instead: ``` eval `spack load --sh libxml2 xz` ``` --- lib/spack/spack/cmd/load.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/cmd/load.py b/lib/spack/spack/cmd/load.py index 09f3fd31ee9..9a00ad1c589 100644 --- a/lib/spack/spack/cmd/load.py +++ b/lib/spack/spack/cmd/load.py @@ -51,6 +51,7 @@ def load(parser, args): for spec in spack.cmd.parse_specs(args.specs)] if not args.shell: + specs_string = ' '.join(args.specs) msg = [ "This command works best with Spack's shell support", "" @@ -58,8 +59,8 @@ def load(parser, args): 'Or, if you want to use `spack load` without initializing', 'shell support, you can run one of these:', '', - ' eval `spack load --sh %s` # for bash/sh' % args.specs, - ' eval `spack load --csh %s` # for csh/tcsh' % args.specs, + ' eval `spack load --sh %s` # for bash/sh' % specs_string, + ' eval `spack load --csh %s` # for csh/tcsh' % specs_string, ] tty.msg(*msg) return 1 From 45306206c75f9fd48e7bc96f167bd83774108441 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Mon, 24 Feb 2020 17:58:21 +0100 Subject: [PATCH 233/238] docs: Fix tiny typo (#15181) --- lib/spack/docs/containers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/containers.rst b/lib/spack/docs/containers.rst index bbb21a2e005..18500ff7648 100644 --- a/lib/spack/docs/containers.rst +++ b/lib/spack/docs/containers.rst @@ -108,7 +108,7 @@ are currently supported are summarized in the table below: - ``ubuntu:16.04`` - ``spack/ubuntu-xenial`` * - Ubuntu 18.04 - - ``ubuntu:16.04`` + - ``ubuntu:18.04`` - ``spack/ubuntu-bionic`` * - CentOS 6 - ``centos:6`` From 9b3f5f3890025494ffa620d144d22a4734c8fcee Mon Sep 17 00:00:00 2001 From: ktsai7 <35276356+ktsai7@users.noreply.github.com> Date: Mon, 24 Feb 2020 12:22:25 -0700 Subject: [PATCH 234/238] update flecsi and legion package.py (#15159) * update flecsi and legion package.py * comment out a conflict * update to use extend --- .../repos/builtin/packages/flecsi/package.py | 39 ++++++++++++------- .../repos/builtin/packages/legion/package.py | 15 +++++-- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/var/spack/repos/builtin/packages/flecsi/package.py b/var/spack/repos/builtin/packages/flecsi/package.py index d78f350c59f..59c62e6352e 100644 --- a/var/spack/repos/builtin/packages/flecsi/package.py +++ b/var/spack/repos/builtin/packages/flecsi/package.py @@ -22,10 +22,13 @@ class Flecsi(CMakePackage): version('master', branch='master', submodules=False, preferred=True) - variant('build_type', default='Release', values=('Debug', 'Release'), + variant('build_type', default='Release', + values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel'), description='The build type to build', multi=False) variant('backend', default='mpi', values=('serial', 'mpi', 'legion', 'hpx'), description='Backend to use for distributed memory', multi=False) + variant('debug_backend', default=False, + description='Build Backend with Debug Mode') variant('minimal', default=False, description='Disable FindPackageMetis') variant('shared', default=True, @@ -48,28 +51,32 @@ class Flecsi(CMakePackage): description='Build FleCSI Tutorials') variant('flecstan', default=False, description='Build FleCSI Static Analyzer') + variant('cinch', default=False, + description='Enable External Cinch') depends_on('cmake@3.12:', type='build') # Requires cinch > 1.0 due to cinchlog installation issue - depends_on('cinch@1.01:', type='build') + depends_on('cinch@1.01:', type='build', when='+cinch') depends_on('mpi', when='backend=mpi') depends_on('mpi', when='backend=legion') depends_on('mpi', when='backend=hpx') - depends_on('legion@ctrl-rep +shared +mpi +hdf5', when='backend=legion +hdf5') - depends_on('legion@ctrl-rep +shared +mpi', when='backend=legion ~hdf5') - depends_on('hpx@1.3.0 cxxstd=14', when='backend=hpx') + depends_on('legion@ctrl-rep+shared+mpi+hdf5 build_type=Debug', when='backend=legion +debug_backend +hdf5') + depends_on('legion@ctrl-rep+shared+mpi build_type=Debug', when='backend=legion +debug_backend ~hdf5') + depends_on('legion@ctrl-rep+shared+mpi+hdf5 build_type=Release', when='backend=legion ~debug_backend +hdf5') + depends_on('legion@ctrl-rep+shared+mpi build_type=Release', when='backend=legion ~debug_backend ~hdf5') + depends_on('hpx@1.3.0 cxxstd=14 build_type=Debug', when='backend=hpx +debug_backend') + depends_on('hpx@1.3.0 cxxstd=14 build_type=Release', when='backend=hpx ~debug_backend') depends_on('boost@1.70.0: cxxstd=14 +program_options') depends_on('metis@5.1.0:') depends_on('parmetis@4.0.3:') - depends_on('hdf5', when='+hdf5') + depends_on('hdf5+mpi', when='+hdf5') depends_on('caliper', when='+caliper') depends_on('graphviz', when='+graphviz') depends_on('python@3.0:', when='+tutorial') depends_on('llvm', when='+flecstan') conflicts('+tutorial', when='backend=hpx') -# conflicts('+hdf5', when='backend=hpx') -# conflicts('+hdf5', when='backend=mpi') + # conflicts('+hdf5', when='backend=hpx') def cmake_args(self): spec = self.spec @@ -80,7 +87,9 @@ def cmake_args(self): '-DENABLE_COLORING=ON', '-DENABLE_DEVEL_TARGETS=ON' ] - options.append('-DCINCH_SOURCE_DIR=' + spec['cinch'].prefix) + + if '+cinch' in spec: + options.append('-DCINCH_SOURCE_DIR=' + spec['cinch'].prefix) if spec.variants['backend'].value == 'legion': options.append('-DFLECSI_RUNTIME_MODEL=legion') @@ -95,6 +104,11 @@ def cmake_args(self): options.append('-DFLECSI_RUNTIME_MODEL=serial') options.append('-DENABLE_MPI=OFF') + if self.run_tests: + options.append('-DENABLE_UNIT_TESTS=ON') + else: + options.append('-DENABLE_UNIT_TESTS=OFF') + if '+minimal' in spec: options.append('-DCMAKE_DISABLE_FIND_PACKAGE_METIS=ON') else: @@ -104,12 +118,7 @@ def cmake_args(self): else: options.append('-DBUILD_SHARED_LIBS=OFF') - if self.run_tests: - options.append('-DENABLE_UNIT_TESTS=ON') - else: - options.append('-DENABLE_UNIT_TESTS=OFF') - - if '+hdf5' in spec and spec.variants['backend'].value == 'legion': + if '+hdf5' in spec and spec.variants['backend'].value != 'hpx': options.append('-DENABLE_HDF5=ON') else: options.append('-DENABLE_HDF5=OFF') diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py index 5b8b761d496..81ce5faf862 100644 --- a/var/spack/repos/builtin/packages/legion/package.py +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -27,6 +27,8 @@ class Legion(CMakePackage): version('master', branch='master') version('ctrl-rep', branch='control_replication') + version('ctrl-rep-4', commit='b66083076016c63ea8398fdb89c237880fcb0173') + version('ctrl-rep-3', commit='572576b312509e666f2d72fafdbe9d968b1a6ac3') version('ctrl-rep-2', commit='96682fd8aae071ecd30a3ed5f481a9d84457a4b6') version('ctrl-rep-1', commit='a03671b21851d5f0d3f63210343cb61a630f4405') version('ctrl-rep-0', commit='177584e77036c9913d8a62e33b55fa784748759c') @@ -46,14 +48,15 @@ class Legion(CMakePackage): description='Build on top of ibv conduit for InfiniBand support') variant('shared', default=True, description='Build shared libraries') variant('hdf5', default=True, description='Enable HDF5 support') - variant('build_type', default='Release', values=('Debug', 'Release'), - description='The build type to build') + variant('build_type', default='Release', + values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel'), + description='The build type to build', multi=False) depends_on("cmake@3.1:", type='build') depends_on("gasnet~aligned-segments~pshm segment-mmap-max='16GB'", when='~mpi') depends_on("gasnet~aligned-segments~pshm segment-mmap-max='16GB' +mpi", when='+mpi') depends_on("gasnet~aligned-segments~pshm segment-mmap-max='16GB' +ibv", when='+ibv') - depends_on("hdf5~mpi", when='+hdf5') + depends_on("hdf5", when='+hdf5') def cmake_args(self): cmake_cxx_flags = [ @@ -69,7 +72,11 @@ def cmake_args(self): '-DBUILD_SHARED_LIBS=%s' % ('+shared' in self.spec)] if self.spec.variants['build_type'].value == 'Debug': - cmake_cxx_flags.append('-DDEBUG_REALM', '-DDEBUG_LEGION', '-ggdb') + cmake_cxx_flags.extend([ + '-DDEBUG_REALM', + '-DDEBUG_LEGION', + '-ggdb', + ]) options.append('-DCMAKE_CXX_FLAGS=%s' % (" ".join(cmake_cxx_flags))) From 4a0b7c9d2085c1ae41b6190d1aeb03cced737436 Mon Sep 17 00:00:00 2001 From: Kai Torben Ohlhus Date: Tue, 25 Feb 2020 13:22:00 +0900 Subject: [PATCH 235/238] suite-sparse: add version 5.7.1 (#15195) Release notes: https://github.com/DrTimothyAldenDavis/SuiteSparse/releases/tag/v5.7.1 Version 5.7.0 was an incomplete release. --- var/spack/repos/builtin/packages/suite-sparse/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index 10f99dfbb6b..5019b7a2365 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -14,6 +14,7 @@ class SuiteSparse(Package): url = 'https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/v4.5.3.tar.gz' git = 'https://github.com/DrTimothyAldenDavis/SuiteSparse.git' + version('5.7.1', sha256='5ba5add1663d51a1b6fb128b50fe869b497f3096765ff7f8212f0ede044b9557') version('5.6.0', sha256='76d34d9f6dafc592b69af14f58c1dc59e24853dcd7c2e8f4c98ffa223f6a1adb') version('5.5.0', sha256='63c73451734e2bab19d1915796c6776565ea6aea5da4063a9797ecec60da2e3d') version('5.4.0', sha256='d9d62d539410d66550d0b795503a556830831f50087723cb191a030525eda770') From 5c68caeb1e11c1cc9626ba48d9c555c30c444582 Mon Sep 17 00:00:00 2001 From: OliverPerks Date: Tue, 25 Feb 2020 04:28:13 +0000 Subject: [PATCH 236/238] Update of OpenFOAM package.py (#15190) --- var/spack/repos/builtin/packages/openfoam/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/openfoam/package.py b/var/spack/repos/builtin/packages/openfoam/package.py index f741db61d92..72fd6158057 100644 --- a/var/spack/repos/builtin/packages/openfoam/package.py +++ b/var/spack/repos/builtin/packages/openfoam/package.py @@ -825,10 +825,12 @@ def __init__(self, spec, **kwargs): self.arch_option = '-march=knl' # spec.architecture.platform is like `uname -s`, but lower-case - platform = spec.architecture.platform + platform = str(spec.architecture.platform) # spec.target.family is like `uname -m` - target = spec.target.family + target = str(spec.target.family) + + # No spack platform family for ia64 or armv7l if platform == 'linux': if target == 'x86_64': From 21afb13be6ceb35dde871478f555eb4033abaa49 Mon Sep 17 00:00:00 2001 From: Kevin Huck Date: Mon, 24 Feb 2020 20:33:05 -0800 Subject: [PATCH 237/238] Adding ADIOS2 and SQLite3 output support to TAU. Also fixing MPI include and library paths. (#15189) Setup package to use MPI the way Spack recommends, and remove extra iowrapper option from configure Making flake happy --- .../repos/builtin/packages/tau/package.py | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index c5ac0a43e8b..30a0abc402c 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -67,6 +67,8 @@ class Tau(Package): variant('cuda', default=False, description='Activates CUDA support') variant('fortran', default=darwin_default, description='Activates Fortran support') variant('io', default=True, description='Activates POSIX I/O support') + variant('adios2', default=False, description='Activates ADIOS2 output support') + variant('sqlite', default=True, description='Activates SQLite3 output support') # Support cross compiling. # This is a _reasonable_ subset of the full set of TAU @@ -88,9 +90,11 @@ class Tau(Package): depends_on('binutils+libiberty+headers~nls', when='+binutils') depends_on('python@2.7:', when='+python') depends_on('libunwind', when='+libunwind') - depends_on('mpi', when='+mpi') + depends_on('mpi', when='+mpi', type=('build', 'run', 'link')) depends_on('cuda', when='+cuda') depends_on('gasnet', when='+gasnet') + depends_on('adios2', when='+adios2') + depends_on('sqlite', when='+sqlite') # Elf only required from 2.28.1 on conflicts('+libelf', when='@:2.28.0') @@ -145,8 +149,7 @@ def install(self, spec, prefix): # TAU configure, despite the name , seems to be a manually # written script (nothing related to autotools). As such it has # a few #peculiarities# that make this build quite hackish. - options = ["-prefix=%s" % prefix, - "-iowrapper"] + options = ["-prefix=%s" % prefix] if '+craycnl' in spec: options.append('-arch=craycnl') @@ -206,6 +209,11 @@ def install(self, spec, prefix): options.append("-otf=%s" % spec['otf2'].prefix) if '+mpi' in spec: + env['CC'] = spec['mpi'].mpicc + env['CXX'] = spec['mpi'].mpicxx + env['F77'] = spec['mpi'].mpif77 + env['FC'] = spec['mpi'].mpifc + options.append('-mpi') if '+comm' in spec: options.append('-PROFILECOMMUNICATORS') @@ -219,6 +227,12 @@ def install(self, spec, prefix): if '+cuda' in spec: options.append("-cuda=%s" % spec['cuda'].prefix) + if '+adios2' in spec: + options.append("-adios=%s" % spec['adios2'].prefix) + + if '+sqlite' in spec: + options.append("-sqlite3=%s" % spec['sqlite'].prefix) + if '+phase' in spec: options.append('-PROFILEPHASE') From 8d8925c725491cf028ef6c1b93e431dcb200f439 Mon Sep 17 00:00:00 2001 From: Kai Torben Ohlhus Date: Tue, 25 Feb 2020 18:36:54 +0900 Subject: [PATCH 238/238] qrupdate: ILP64 support (#15104) - When compiling qrupdate with `FFLAGS=-fdefault-integer-8` it can be perfectly used for larger problem dimensions. - Improved the readability of the file with the added rules. --- .../builtin/packages/qrupdate/package.py | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/qrupdate/package.py b/var/spack/repos/builtin/packages/qrupdate/package.py index 185bd1f421b..3f215017111 100644 --- a/var/spack/repos/builtin/packages/qrupdate/package.py +++ b/var/spack/repos/builtin/packages/qrupdate/package.py @@ -29,17 +29,31 @@ def edit(self, spec, prefix): return def install(self, spec, prefix): + lapack_blas = spec['lapack'].libs + spec['blas'].libs - # Build static and dynamic libraries - make('lib', 'solib', - 'BLAS={0}'.format(lapack_blas.ld_flags), - 'LAPACK={0}'.format(lapack_blas.ld_flags)) - # "INSTALL" confuses "make install" on case-insensitive filesystems + + make_args = [ + 'BLAS={0}'.format(lapack_blas.ld_flags), + 'LAPACK={0}'.format(lapack_blas.ld_flags) + ] + + # If 64-bit BLAS is used: + if (spec.satisfies('^openblas+ilp64') or + spec.satisfies('^intel-mkl+ilp64') or + spec.satisfies('^intel-parallel-studio+mkl+ilp64')): + make_args.append('FFLAGS=-fdefault-integer-8') + + # Build static and dynamic libraries: + make('lib', 'solib', *make_args) + + # "INSTALL" confuses "make install" on case-insensitive filesystems: if os.path.isfile("INSTALL"): os.remove("INSTALL") - # create lib folder: + + # Create lib folder: if (sys.platform == 'darwin'): mkdirp(prefix.lib) + make("install", "PREFIX=%s" % prefix) @run_after('install')