Add packages related to the LWA software stack (#34112)

* epsic: add epsic package to spack

* psrcat: add psrcat to spack

* psrchive: add psarchive to spack

* tempo: add tempo package to spack
This commit is contained in:
downloadico 2022-12-05 10:48:04 -07:00 committed by GitHub
parent 78ec3d5662
commit 85b6bf99a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 171 additions and 0 deletions

View File

@ -0,0 +1,27 @@
# 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.package import *
class Epsic(AutotoolsPackage):
"""Electromagnetic Polarization Simulation in C++."""
homepage = "https://github.com/straten/epsic"
git = "https://github.com/straten/epsic.git"
version("develop", default=True)
# Version to match
# https://github.com/lwa-project/pulsar/blob/master/SoftwareStack.md
# last updated 10/17/2020
version("LWA-10-17-2020", commit="5315cc634f6539ea0a34e403e492472b97e0f086")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("yacc", when="@develop", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
configure_directory = "src"

View File

@ -0,0 +1,25 @@
# 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.package import *
class Psrcat(MakefilePackage):
"""ATNF Pulsar Catalogue
A catalogue of pulsars provided by the Australian Telescope National
Facility"""
homepage = "https://www.atnf.csiro.au/research/pulsar/psrcat/"
url = "https://www.atnf.csiro.au/research/pulsar/psrcat/downloads/psrcat_pkg.v1.68.tar.gz"
version("1.68", sha256="fbe4710c9122e4f93dbca54cf42cc2906f948f76885b241d1da2f8caecfbc657")
def build(self, spec, prefix):
makeit = which("./makeit")
makeit()
def install(self, spec, prefix):
mkdirp(prefix.bin)
install("psrcat", bindir)

View File

@ -0,0 +1,96 @@
# 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.package import *
class Psrchive(AutotoolsPackage):
"""PSRCHIVE is a library for the analysis of pulsar astronomical data.
PSRCHIVE is an Open Source C++ development library for the analysis of
pulsar astronomical data. It implements an extensive range of algorithms
for use in pulsar timing, scintillation studies, polarimetric calibration,
single-pulse work, RFI mitigation, etc. These tools are utilized by a
powerful suite of user-end programs that come with the library."""
homepage = "http://psrchive.sourceforge.net/"
url = "https://sourceforge.net/projects/psrchive/files/psrchive/2022-05-14/psrchive-2022-05-14.tar.gz/download"
git = "https://git.code.sf.net/p/psrchive/code.git"
version(
"2022-05-14", sha256="4d25609837cba1be244fa8adc8f105afe31972f2650bc0b90438862cf35395e1"
)
# version specified in
# https://github.com/lwa-project/pulsar/blob/master/SoftwareStack.md
# as of Nov 23 2022
version("2020-10-17", commit="ca12b4a279f3d4adcca223508116d9d270df8cc6")
variant("mpi", default=True, description="Compile with MPI")
variant("mkl", default=False, description="Compile with MKL")
variant("armadillo", default=False, description="Compile with armadillo")
variant("cfitsio", default=False, description="Compile with cfitsio")
variant("eigen", default=False, description="Compile with eigen")
variant("xml", default=False, description="Compile with libxml2")
variant("x11", default=False, description="Compile with X11")
variant("qt", default=False, description="Compile with QT")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("psrcat")
depends_on("epsic")
depends_on("tempo")
depends_on("fftw@3:")
depends_on("python")
depends_on("pgplot")
depends_on("mpi", when="+mpi")
depends_on("mkl", when="+mkl")
depends_on("armadillo", when="+armadillo")
depends_on("cfitsio", when="+cfitsio")
depends_on("eigen", when="+eigen")
depends_on("libxml2", when="+xml")
depends_on("libx11", when="+x11")
depends_on("qt", when="+qt")
def configure_args(self):
spec = self.spec
args = ["--enable-shared"]
args.append("--with-python_prefix={0}".format(spec["python"].prefix))
args.append("--with-epsic-dir={}".format(spec["epsic"].prefix))
args.append("--with-epsic-include-dir={}".format(spec["epsic"].prefix.include))
args.append("--with-epsic-lib-dir={}".format(spec["epsic"].prefix.lib))
args.append("--with-psrcat={0}".format(spec["psrcat"].prefix.bin.psrcat))
args.append("--with-fftw3-dir={0}".format(spec["fftw"].prefix))
if spec.satisfies("+mpi"):
args.append("--with-mpi-dir={0}".format(spec["mpi"].prefix))
else:
args.append("--without-mpi")
if spec.satisfies("+mkl"):
args.append("--with-mkl-dir={0}".format(spec["mkl"].prefix))
else:
args.append("--without-mkl")
if spec.satisfies("+armadillo"):
args.append("--with-armadillo-dir={0}".format(spec["armadillo"].prefix))
else:
args.append("--without-armadillo")
if spec.satisfies("+cfitsio"):
args.append("--with-cfitsio-dir={0}".format(spec["cfitsio"].prefix))
else:
args.append("--without-cfitsio")
if spec.satisfies("+eigen"):
args.append("--with-eigen-dir={0}".format(spec["eigen"].prefix))
else:
args.append("--without-eigen")
if spec.satisfies("+xml"):
args.append("--with-xml-prefix={0}".format(spec["libxml2"].prefix))
else:
args.append("--without-xml")
if spec.satisfies("+qt"):
args.append("--with-qt-dir={0}".format(spec["qt"].prefix))
else:
args.append("--without-qt")
return args

View File

@ -0,0 +1,23 @@
# 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.package import *
class Tempo(AutotoolsPackage):
"""Tempo is a program for pulsar timing data analysis."""
homepage = "http://tempo.sourceforge.net/"
git = "git://git.code.sf.net/p/tempo/tempo.git"
version("develop")
version("LWA-10-17-2020", commit="6bab1083350eca24745eafed79a55156bdd1e7d5")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
def setup_dependent_run_environment(self, spack_env, dependent_spec):
spack_env.set("TEMPO_DIR", self.prefix)