new package: openmm (#16002)

* new package: openmm

* dependency adjustments

* 1. modify dependencies
2. openmm dynamically compiles cuda kernels during runtime,
   attempt to set up an environment that will work.

* Update var/spack/repos/builtin/packages/openmm/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
This commit is contained in:
Andrew W Elble
2020-04-11 17:29:56 -04:00
committed by GitHub
parent 91e22b8ae5
commit a5f7cc887a

View File

@@ -0,0 +1,48 @@
# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
class Openmm(CMakePackage, CudaPackage):
"""A high performance toolkit for molecular simulation. Use it as
a library, or as an application. We include extensive language
bindings for Python, C, C++, and even Fortran. The code is open
source and actively maintained on Github, licensed under MIT and
LGPL. Part of the Omnia suite of tools for predictive biomolecular
simulation. """
homepage = "http://openmm.org/"
url = "https://github.com/openmm/openmm/archive/7.4.1.tar.gz"
version('7.4.1', sha256='e8102b68133e6dcf7fcf29bc76a11ea54f30af71d8a7705aec0aee957ebe3a6d')
install_targets = ['install', 'PythonInstall']
depends_on('python@2.7:', type=('build', 'run'))
depends_on('cmake@3.1:', type='build')
depends_on('doxygen', type='build')
depends_on('swig', type='build')
depends_on('fftw')
depends_on('py-cython', type='build')
depends_on('py-numpy', type=('build', 'run'))
depends_on('cuda', when='+cuda', type=('build', 'link', 'run'))
extends('python')
def patch(self):
install_string = "set(PYTHON_SETUP_COMMAND \"install " \
"--prefix={0}\")".format(self.prefix)
filter_file(r'set\(PYTHON_SETUP_COMMAND \"install.*',
install_string,
'wrappers/python/CMakeLists.txt')
def setup_run_environment(self, env):
spec = self.spec
if '+cuda' in spec:
env.set('OPENMM_CUDA_COMPILER',
self.spec['cuda'].prefix.bin.nvcc)
env.prepend_path('PATH',
os.path.dirname(self.compiler.cc))