summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorsnehring <snehring@users.noreply.github.com>2022-04-27 03:56:31 -0500
committerGitHub <noreply@github.com>2022-04-27 08:56:31 +0000
commit351072cd9fba3b90f00cf8dc6e51c6d7cfd34fd1 (patch)
tree57678e7047a9da94506b3003a023e2bcead78060 /var
parent0b23f1be05d5b75334dc7e3de7ba26c8fac24d98 (diff)
downloadspack-351072cd9fba3b90f00cf8dc6e51c6d7cfd34fd1.tar.gz
spack-351072cd9fba3b90f00cf8dc6e51c6d7cfd34fd1.tar.bz2
spack-351072cd9fba3b90f00cf8dc6e51c6d7cfd34fd1.tar.xz
spack-351072cd9fba3b90f00cf8dc6e51c6d7cfd34fd1.zip
gcta: rework package recipe (#30286)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/gcta/package.py65
-rw-r--r--var/spack/repos/builtin/packages/spectra/package.py30
2 files changed, 85 insertions, 10 deletions
diff --git a/var/spack/repos/builtin/packages/gcta/package.py b/var/spack/repos/builtin/packages/gcta/package.py
index 8136742a04..76cbfc265b 100644
--- a/var/spack/repos/builtin/packages/gcta/package.py
+++ b/var/spack/repos/builtin/packages/gcta/package.py
@@ -6,24 +6,69 @@
from spack import *
-class Gcta(Package):
-
+class Gcta(CMakePackage):
"""GCTA (Genome-wide Complex Trait Analysis) was originally designed to
estimate the proportion of phenotypic variance explained by all genome-wide
SNPs for complex traits (the GREML method), and has subsequently extended
for many other analyses to better understand the genetic architecture of
complex traits. GCTA currently supports the following analyses."""
- homepage = "https://cnsgenomics.com/software/gcta/#Overview"
- url = "http://cnsgenomics.com/software/gcta/gcta_1.91.2beta.zip"
+ homepage = "https://github.com/jianyangqt/gcta"
+ url = "https://github.com/jianyangqt/gcta/archive/refs/tags/v1.91.2.tar.gz"
+ git = "https://github.com/jianyangqt/gcta.git"
+ maintainers = ['snehring']
+
+ version('1.94.0beta', commit='746e3975ddb463fc7bd15b03c6cc64b023eca497', submodules=True)
+ version('1.91.2', sha256='0609d0fba856599a2acc66adefe87725304117acc226360ec2aabf8a0ac64e85')
+
+ conflicts('target=aarch64:', when='@:1.91.2', msg='aarch64 support added in 1.94.0')
+
+ depends_on('cmake@3.1:', type='build')
+ depends_on('intel-mkl@2017:', when='target=x86_64:')
+ depends_on('openblas', when='target=aarch64:')
+ depends_on('eigen@3.3.1', when='@1.91.2')
+ depends_on('eigen@3.3.7:', when='@1.94.0beta:')
+ depends_on('boost@1.79:', when='@1.94.0beta:')
+ depends_on('zlib')
+ depends_on('sqlite@3.3.1:', when='@1.94.0beta:')
+ depends_on('zstd@1.4.4:', when='@1.94.0beta:')
+ depends_on('spectra', when='@1.94.0beta:')
+ depends_on('gsl', when='@1.94.0beta:')
+
+ def patch(self):
+ # allow us to specify the locations with cmake_args
+ strings = [
+ 'SET(EIGEN3_INCLUDE_DIR "$ENV{EIGEN3_INCLUDE_DIR}")',
+ 'SET(SPECTRA_LIB "$ENV{SPECTRA_LIB}")',
+ 'SET(BOOST_LIB "$ENV{BOOST_LIB}")',
+ 'SET(OPENBLAS "$ENV{OPENBLAS}")',
+ 'SET(MKLROOT "$ENV{MKLROOT}")'
+ ]
+ for s in strings:
+ filter_file(s, '', 'CMakeLists.txt', string=True)
+
+ def cmake_args(self):
+ eigen = self.spec['eigen'].prefix.include
+ args = [self.define('EIGEN3_INCLUDE_DIR', eigen)]
+ if self.spec.satisfies('@1.94.0beta:'):
+ spectra = self.spec['spectra'].prefix.include
+ boost = self.spec['boost'].prefix.include
+ deps = [
+ self.define('SPECTRA_LIB', spectra),
+ self.define('BOOST_LIB', boost),
+ ]
+ args.extend(deps)
- version('1.91.2beta_mac', 'ce0882ad35dd9474ffe40911da369274700af1ecb9916c0a355b7bad14850234')
- version('1.91.2beta', '192efb767be1c7ca9c2dac5d2c2317a97c7a9db1f801168d19ad2a51b98d9b10', preferred=True)
+ if self.spec.satisfies('target=x86_64:'):
+ mkl = self.spec['intel-mkl'].prefix
+ args.append(self.define('MKLROOT', mkl))
+ elif self.spec.satisfies('target=aarch64:'):
+ openblas = self.spec['openblas'].prefix
+ args.append(self.define('OPENBLAS', openblas))
- conflicts('@1.91.2beta', when='platform=darwin')
- conflicts('@1.91.2beta_mac', when='platform=linux')
+ return args
def install(self, spec, prefix):
mkdirp(prefix.bin)
- install('gcta64', join_path(prefix.bin, 'gcta64'))
- set_executable(join_path(prefix.bin, 'gcta64'))
+ with working_dir(self.build_directory):
+ install('gcta64', join_path(prefix.bin, 'gcta64'))
diff --git a/var/spack/repos/builtin/packages/spectra/package.py b/var/spack/repos/builtin/packages/spectra/package.py
new file mode 100644
index 0000000000..14a3e8ba6b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/spectra/package.py
@@ -0,0 +1,30 @@
+# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack import *
+
+
+class Spectra(CMakePackage):
+ """
+ Spectra stands for Sparse Eigenvalue Computation Toolkit as a Redesigned
+ ARPACK. It is a C++ library for large scale eigenvalue problems,
+ built on top of Eigen, an open source linear algebra library.
+
+ Spectra is implemented as a header-only C++ library, whose only
+ dependency, Eigen, is also header-only. Hence Spectra can be easily
+ embedded in C++ projects that require calculating eigenvalues of
+ large matrices.
+ """
+
+ homepage = "https://spectralib.org/"
+ url = "https://github.com/yixuan/spectra/archive/refs/tags/v1.0.1.tar.gz"
+ maintainers = ['snehring']
+
+ version('1.0.1', sha256='919e3fbc8c539a321fd5a0766966922b7637cc52eb50a969241a997c733789f3')
+ version('1.0.0', sha256='45228b7d77b916b5384245eb13aa24bc994f3b0375013a8ba6b85adfd2dafd67')
+ version('0.9.0', sha256='2966757d432e8fba5958c2a05ad5674ce34eaae3718dd546c1ba8760b80b7a3d')
+
+ depends_on('cmake@3.5:')
+ depends_on('eigen')